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?

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.


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.


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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.