Maven project.build.directory

172

Di Maven, apa project.build.directoryrujukannya? Saya agak bingung, apakah referensi direktori kode sumber atau direktori target dalam proyek Maven?

faisal abdulai
sumber

Jawaban:

224

Anda dapat menemukan properti-properti pakar di super pom.

Anda menemukan kendi di sini:

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

Buka tabung dengan 7 zip atau pengarsip lainnya (atau gunakan alat jar).

Navigasi ke

org/apache/maven/model

Di sana Anda akan menemukan pom-4.0.0.xml.

Ini berisi semua "jalan pintas":

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

Memperbarui

Setelah beberapa lobi saya menambahkan tautan kepom-4.0.0.xml . Ini memungkinkan Anda untuk melihat properti tanpa membuka file jar lokal.

maba
sumber
Saya akan menyarankan referensi online daripada file yang diarsipkan ke dalam toples. Ini: maven.apache.org/ref/3.0.3/maven-model/maven.html
khmarbaise
18
@khmarbaise Yah itu bagus juga tetapi tidak menunjukkan nilai default project.build.directorymisalnya. Itu yang ingin saya tunjukkan.
maba
Cermin github memungkinkan menghubungkan ke nomor baris tertentu: github.com/apache/maven-3/blob/trunk/maven-model-builder/src/… Jika tidak, itu ada di svn di: svn.apache.org/repos/asf / maven / maven-3 / trunk / ...
Martin Ellis
@ MartinEllis OK, saya telah memperbarui jawaban saya dengan tautan juga. Terima kasih!
maba
Saya mencari sumber repo maven di github.com/apache/maven . Jumlah hit yang relatif kecil (9). Tidak ada yang menetapkan properti itu secara langsung. Itu harus diatur di suatu tempat! URL ini menunjukkan hasil pencarian yang saya lihat: github.com/apache/maven/…
PatS
44

Ini menunjuk ke direktori output tingkat atas Anda (yang secara default adalah target):

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

EDIT: Seperti yang telah ditunjukkan, Codehaus sekarang sedih mati. Anda dapat menemukan detail tentang properti ini dari Sonatype di sini:

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

Jika Anda pernah mencoba referensi direktori keluaran di Maven, Anda tidak boleh menggunakan nilai literal seperti target / kelas . Sebaliknya, Anda harus menggunakan referensi properti untuk merujuk ke direktori ini.

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

sourceDirectory,, scriptSourceDirectorydan testSourceDirectorymemberikan akses ke direktori sumber untuk proyek. outputDirectorydan testOutputDirectorymemberikan akses ke direktori tempat Maven akan meletakkan bytecode atau output build lainnya. directorymerujuk ke direktori yang berisi semua direktori keluaran ini.

sdouglass
sumber
1
Hosting codehause.org telah dihentikan dan tautan ini tidak berfungsi lagi.
Bartosz Firyn
Ya, benar dan sedih. Saya telah memperbarui dengan tautan yang berfungsi dan mengutip bagian yang relevan dari halaman yang ditautkan.
sdouglass
7
... jadi project.base.dirarahkan ke direktori root proyek tempat pom.xml berada. Itu sebabnya setelah itu, yang project.build.directorydidefinisikan oleh Maven adalah ${project.basedir}/target. Terima kasih teman-teman, saya tidak tahu ini.
evaldeslacasa
1
Meskipun tampaknya benar, tetapi bagaimana Anda mendapatkan info ini: "project.base.dir menunjuk ke direktori root dari proyek di mana pom.xml berada". Di mana saya bisa melihat definisi ini?
qartal
2
misalkan proyek Anda disebut proyek-A, dan di bawah proyek-A, pom.xml dinyatakan, lalu ${project.build.sourceDirectory}menunjuk ke project-A/src/main/java, ${project.build.scriptSourceDirectory}menunjuk ke project-A/src/main/scripts, ${project.build.testSourceDirectory}menunjuk ke project-A/src/test/java, ${project.build.directory}menunjuk ke project-A/target, ${project.build.directory}menunjuk ke project-A/target/classes, ${project.build.testOutputDirectory}menunjuk ke , menunjuk ke project-A/target/test-classes.
sc30
4

Anda dapat menemukan jawaban terkini untuk nilai dalam proyek Anda, cukup jalankan

mvn3 help:effective-pom

perintah dan temukan nilai <build> ... <directory>tag di hasil alias di pom-efektif. Ini akan menunjukkan nilai Super POM kecuali Anda telah ditimpa.

Verhás István
sumber