No Maven, a que se project.build.directory
refere? Estou um pouco confuso, ele faz referência ao diretório de código-fonte ou ao diretório de destino no projeto Maven?
No Maven, a que se project.build.directory
refere? Estou um pouco confuso, ele faz referência ao diretório de código-fonte ou ao diretório de destino no projeto Maven?
Respostas:
Você pode encontrar essas propriedades maven no super pom.
Você encontra o frasco aqui:
${M2_HOME}/lib/maven-model-builder-3.0.3.jar
Abra o jar com 7-zip ou outro arquivador (ou use a ferramenta jar).
Navegar para
org/apache/maven/model
Lá você encontrará o pom-4.0.0.xml
.
Ele contém todos esses "atalhos":
<project>
...
<build>
<directory>${project.basedir}/target</directory>
<outputDirectory>${project.build.directory}/classes</outputDirectory>
<finalName>${project.artifactId}-${project.version}</finalName>
<testOutputDirectory>${project.build.directory}/test-classes</testOutputDirectory>
<sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
<scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>
<testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>
<resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>${project.basedir}/src/test/resources</directory>
</testResource>
</testResources>
...
</build>
...
</project>
Depois de algum lobby, estou adicionando um link para opom-4.0.0.xml
. Isso permite que você veja as propriedades sem abrir o arquivo jar local.
project.build.directory
por exemplo. Era isso que eu queria mostrar.
Aponta para o diretório de saída de nível superior (que por padrão é target
):
EDIT: Como foi apontado, o Codehaus agora está tristemente extinto. Você pode encontrar detalhes sobre essas propriedades no Sonatype aqui:
Se você está tentando referenciar diretórios de saída no Maven, nunca deve usar um valor literal como destino / classes . Em vez disso, você deve usar referências de propriedades para se referir a esses diretórios.
project.build.sourceDirectory project.build.scriptSourceDirectory project.build.testSourceDirectory project.build.outputDirectory project.build.testOutputDirectory project.build.directory
sourceDirectory
,scriptSourceDirectory
etestSourceDirectory
forneça acesso aos diretórios de origem do projeto.outputDirectory
etestOutputDirectory
forneça acesso aos diretórios em que o Maven colocará o bytecode ou outra saída de compilação.directory
refere-se ao diretório que contém todos esses diretórios de saída.
project.base.dir
aponta para o diretório raiz do projeto onde está o pom.xml. É por isso que depois disso, project.build.directory
definido por Maven, é ${project.basedir}/target
. Obrigado pessoal, eu não sabia disso.
${project.build.sourceDirectory}
aponte para project-A/src/main/java
, ${project.build.scriptSourceDirectory}
aponte para project-A/src/main/scripts
, ${project.build.testSourceDirectory}
aponte para project-A/src/test/java
, ${project.build.directory}
aponte para project-A/target
, ${project.build.directory}
aponte para project-A/target/classes
, ${project.build.testOutputDirectory}
aponte para , aponte para project-A/target/test-classes
.
Você pode encontrar a resposta mais atualizada para o valor do seu projeto, basta executar o
mvn3 help:effective-pom
comando e encontre o <build> ... <directory>
valor da tag no resultado aka no eficaz-pom. Ele mostrará o valor do Super POM, a menos que você tenha substituído.