Maven project.build.directory

173

En Maven, ¿a qué se project.build.directoryrefiere? Estoy un poco confundido, ¿hace referencia al directorio del código fuente o al directorio de destino en el proyecto Maven?

faisal abdulai
fuente

Respuestas:

224

Puedes encontrar esas propiedades maven en el súper pom.

Encuentra el frasco aquí:

${M2_HOME}/lib/maven-model-builder-3.0.3.jar

Abra el frasco con 7-zip o algún otro archivador (o use la herramienta de frasco).

Navegar a

org/apache/maven/model

Allí encontrarás el pom-4.0.0.xml.

Contiene todos esos "atajos":

<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>

Actualizar

Después de algunos grupos de presión, estoy agregando un enlace alpom-4.0.0.xml . Esto le permite ver las propiedades sin abrir el archivo jar local.

maba
fuente
Sugeriría una referencia en línea en lugar del archivo que se archiva en jar. Esto: maven.apache.org/ref/3.0.3/maven-model/maven.html
khmarbaise
18
@khmarbaise Bueno, eso también es bueno, pero no muestra el valor predeterminado de, project.build.directorypor ejemplo. Eso es lo que quería mostrar.
maba
El espejo github permite vincular a un número de línea específico: github.com/apache/maven-3/blob/trunk/maven-model-builder/src/… De lo contrario, está en svn en: svn.apache.org/repos/asf / maven / maven-3 / trunk / ...
Martin Ellis el
@ MartinEllis OK, también he actualizado mi respuesta con un enlace. ¡Gracias!
maba
Busqué la fuente del repositorio de Maven en github.com/apache/maven . Un número relativamente pequeño de golpes (9). Nada establece esa propiedad directamente. ¡Tiene que estar en alguna parte! Esta URL muestra los resultados de búsqueda que vi: github.com/apache/maven/…
PatS
45

Apunta a su directorio de salida de nivel superior (que por defecto es target ):

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

EDITAR: Como se ha señalado, Codehaus ahora está tristemente difunto. Puede encontrar detalles sobre estas propiedades en Sonatype aquí:

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

Si alguna vez intenta hacer referencia a directorios de salida en Maven, nunca debe usar un valor literal como target / classes . En su lugar, debe usar referencias de propiedad para referirse a estos directorios.

    project.build.sourceDirectory
    project.build.scriptSourceDirectory
    project.build.testSourceDirectory
    project.build.outputDirectory
    project.build.testOutputDirectory
    project.build.directory

sourceDirectory, scriptSourceDirectoryy testSourceDirectoryproporcionar acceso a los directorios de origen para el proyecto. outputDirectoryy testOutputDirectoryproporcionar acceso a los directorios donde Maven va a colocar bytecode u otra salida de compilación. directoryse refiere al directorio que contiene todos estos directorios de salida.

sdouglass
fuente
1
El alojamiento de codehause.org ha finalizado y este enlace ya no funciona.
Bartosz Firyn
Sí, cierto y triste. He actualizado con un enlace de trabajo y he citado la sección correspondiente de la página vinculada.
sdouglass
77
... project.base.dirapunta al directorio raíz del proyecto donde está pom.xml. Es por eso que después de eso, project.build.directorydefinido por Maven es ${project.basedir}/target. Gracias chicos, no sabía esto.
evaldeslacasa
1
Aunque parece ser cierto, pero ¿cómo obtuvo esta información: "project.base.dir apunta al directorio raíz del proyecto donde está pom.xml". ¿Dónde puedo ver esta definición?
qartal
2
supongamos que su proyecto se llama proyecto-A, y bajo proyecto-A, se declara un pom.xml, luego ${project.build.sourceDirectory}apunta a project-A/src/main/java, ${project.build.scriptSourceDirectory}puntos a project-A/src/main/scripts, ${project.build.testSourceDirectory}puntos a project-A/src/test/java, ${project.build.directory}puntos a project-A/target, ${project.build.directory}puntos a project-A/target/classes, ${project.build.testOutputDirectory}puntos a project-A/target/test-classes.
sc30
4

Puede encontrar la respuesta más actualizada para el valor en su proyecto simplemente ejecute el

mvn3 help:effective-pom

ordenar y encontrar el <build> ... <directory> valor de etiqueta en el resultado, también conocido en el pom efectivo Mostrará el valor del Super POM a menos que lo haya sobrescrito.

Verhás István
fuente