Maven project.build.directory


172

No Maven, a que se project.build.directoryrefere? 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:


224

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>

Atualizar

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.


Eu sugeriria uma referência on-line em vez de um arquivo que é arquivado no jar. Este: maven.apache.org/ref/3.0.3/maven-model/maven.html
khmarbaise

18
@khmarbaise Bem, isso também é legal, mas não mostra o valor padrão, project.build.directorypor exemplo. Era isso que eu queria mostrar.
maba

O espelho do github permite vincular a um número de linha específico: github.com/apache/maven-3/blob/trunk/maven-model-builder/src/… Caso contrário, ele está no svn em: svn.apache.org/repos/asf / maven / maven-3 / trunk /…
Martin Ellis

@MartinEllis OK, atualizei minha resposta com um link também. Obrigado!
maba

Pesquisei a fonte do repositório maven em github.com/apache/maven . Um número relativamente pequeno de ocorrências (9). Nada define essa propriedade diretamente. Tem que ser definido em algum lugar! Esta URL mostra os resultados da pesquisa que eu vi: github.com/apache/maven/…
PatS

44

Aponta para o diretório de saída de nível superior (que por padrão é target):

https://web.archive.org/web/20150527103929/http://docs.codehaus.org/display/MAVENUSER/MavenPropertiesGuide

EDIT: Como foi apontado, o Codehaus agora está tristemente extinto. Você pode encontrar detalhes sobre essas propriedades no Sonatype aqui:

http://books.sonatype.com/mvnref-book/reference/resource-filtering-sect-properties.html#resource-filtering-sect-project-properties

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, scriptSourceDirectorye testSourceDirectoryforneça acesso aos diretórios de origem do projeto. outputDirectorye testOutputDirectoryforneça acesso aos diretórios em que o Maven colocará o bytecode ou outra saída de compilação. directoryrefere-se ao diretório que contém todos esses diretórios de saída.


1
A hospedagem do codehause.org foi encerrada e este link não funciona mais.
Bartosz Firyn

Sim, verdadeiro e triste. Atualizei com um link de trabalho e citei a seção relevante da página vinculada.
Sdouglass

7
... project.base.diraponta para o diretório raiz do projeto onde está o pom.xml. É por isso que depois disso, project.build.directorydefinido por Maven, é ${project.basedir}/target. Obrigado pessoal, eu não sabia disso.
Evaldeslacasa

1
Embora pareça verdade, mas como você conseguiu essa informação: "project.base.dir aponta para o diretório raiz do projeto onde está o pom.xml". Onde eu posso ver essa definição?
Qartal 9/05

2
suponha que seu projeto seja chamado de projeto-A e, no projeto-A, um pom.xml seja declarado, depois ${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.
sc30 9/12/19

4

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.