Definir caminho de construção Java

Esta secção descreve com definir um caminho de construção Java.   O caminho de construção é o caminho de classes utilizado para construir um projecto Java (IJavaProject).

Um caminho de classes é simplesmente uma tabela de entradas de caminho de classes (IClassPathEntry) que descrevem os tipos disponíveis.   Os tipos podem aparecer em formate fonte ou binário e a ordem das entradas no caminho define a ordem de procura para resolver tipos durante uma construção.

O caminho de construção Java está reflectivo na estrutura do elemento de um projecto Java.   Pode consultar num projecto as respectivas raízes de fragmento de pacote (IPackageFragmentRoot).  Cada entrada do caminho de classes é correlacionada com uma ou mais raízes do fragmento de pacote, e cada uma por sua vez contém um conjunto de fragmentos de pacote.

Esta abordagem ao caminho de construção não envolve o caminho de tempo de execução Java, que pode ser definido à parte do caminho de construção.   (Ver Código de execução Java para uma discussão do caminho de classes de tempo de execução.)

Alterar o caminho de construção

Pode alterar de forma programática o caminho de construção de um projecto utilizando setRawClasspath no correspondente elemento Java do projecto.   O código seguinte define o caminho de classes para o recurso de um projecto:

	IProject project = ... // get some project resource
	IJavaProject javaProject = JavaCore.create(project);
	IClasspathEntry[] newClasspath = ...;
	javaProject.setRawClasspath(newClasspath, someProgressMonitor);
	

(Nota:  A utilização do termo caminho de classes "raw (em bruto)" serve para realçar o facto de que não foram resolvidas quaisquer variáveis utilizadas para descrever localizações de entrada.)

O caminho de construção Java é incluído de forma persistente num ficheiro denominado '.classpath' na estrutura de ficheiro do projecto.   O objectivo deste ficheiro é facultar uma forma de partilhas as definições do caminho de construção Java com outros através do repositórios de código fonte. Em particular, este ficheiros não deve ser editado manualmente, pois pode ser danificado.

Entradas de caminho de classes

As entradas de caminho de classes podem ser definidas com os métodos factory definidos no JavaCore.  As entradas de caminho de classes podem fazer referência a qualquer um dos seguintes:

Padrões de exclusão

Pode ser atribuído um padrão de exclusão a uma entrada de fonte de caminho de classes; este padrão de exclusão evitar que determinados recursos na pasta de fonte sejam visíveis no caminho de classes.   O uso do um padrão permite que porções especificadas da árvore de recursos sejam filtrados e não entrem.   Cada um padrão de exclusão é relativo a uma entrada de caminho de classes e utiliza um mecanismo de padrão semelhante a Ant.   Os um padrões de exclusão podem ser utilizados para especificar pastas de fonte imbricadas desde que o padrão de saída exclua o padrão de entrada.

Consultar getExclusionPatterns para obter mais detalhes sobre padrões exclusivos.

A API do projecto Java isOnClasspath verifica os padrões de inclusão e exclusão antes de determinar se um determinado recurso está no caminho de classes.

Observações:

Padrões de inclusão

Pode também ser atribuído um padrão de inclusão a uma entrada de fonte de caminho de classes; este padrão de inclusão define explicitamente os recursos que podem ser vistos no caminho de classes.   Quando não está especificado qualquer padrão de inclusão, a entrada de fonte inclui todos os ficheiros relevantes na árvore de recursos com raiz no caminho desta entrada de fonte. Especificar um ou mais padrões de inclusão significa que apenas as porções especificadas da árvore de recursos pode ser incluídos. Cada caminho especificado tem de ser um caminho relativo e será interpretado em relação ao caminho desta entrada de fonte. Os padrões de ficheiros são sensíveis a maiúsculas e minúsculas. Um ficheiro que corresponda a um ou mais destes padrões e incluído na raiz do respectivo fragmento de pacote, a não ser que seja excluído por um ou mais padrões de exclusão desta entrada.

Consultar getExclusionPatterns para uma discussão da sintaxe e semântica dos padrões de caminho.A ausência de padrões de inclusão é semanticamente equivalente ao padrão de inclusão explícito **.

A API do projecto Java isOnClasspath verifica os padrões de inclusão e exclusão antes de determinar se um determinado recurso está no caminho de classes.

Exemplos:

Resolução de caminho de classes

Como as variáveis e contentores de caminhos de classes permitem definir de forma dinâmica entradas de caminhos de classes limitadas, a API de caminhos de classes distingue entre caminhos de classes em bruto e resolvidos.    O caminho de classes em bruto é o definido inicialmente no projecto Java com o setRawClasspath, e pode ainda ser consultado pedindo ao projecto o getRawClasspath.  O caminho de classes resolvido pode ser consultado utilizando getResolvedClasspath. Esta operação activa a inicialização de quaisquer variáveis e contentores necessários para resolver o caminho de classes.   Muitas das operações de Modelo Java fazem com que o caminho de construção Java seja implicitamente resolvido.   Por exemplo, o cálculo de raízes do fragmento do pacote de um projecto requer que o caminho de construção seja resolvido.