Maven project.build.directory


172

ใน Maven การproject.build.directoryอ้างอิงหมายถึงอะไร ฉันสับสนเล็กน้อยมันอ้างอิงไดเรกทอรีรหัสต้นฉบับหรือไดเรกทอรีเป้าหมายในโครงการ Maven หรือไม่?

คำตอบ:


224

คุณสามารถค้นหาคุณสมบัติ maven เหล่านั้นได้ใน super pom

คุณพบขวดที่นี่:

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

เปิด jar ด้วย 7-zip หรือ archiver อื่น ๆ (หรือใช้เครื่องมือ jar)

นำทางไปยัง

org/apache/maven/model

pom-4.0.0.xmlมีคุณจะได้พบกับ

มันมี "ทางลัด" เหล่านั้นทั้งหมด:

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

ปรับปรุง

หลังจากวิ่งเต้นบางอย่างที่ฉันกำลังเพิ่มการเชื่อมโยงไป pom-4.0.0.xmlสิ่งนี้อนุญาตให้คุณเห็นคุณสมบัติโดยไม่ต้องเปิดไฟล์ jar โลคัล


ฉันอยากจะแนะนำการอ้างอิงออนไลน์แทนไฟล์ที่เก็บไว้ในโถ สิ่งนี้: maven.apache.org/ref/3.0.3/maven-model/maven.html
khmarbaise

18
@khmarbaise ดีมากเช่นกัน แต่มันไม่แสดงค่าเริ่มต้นproject.build.directoryให้คุณ นั่นคือสิ่งที่ฉันต้องการแสดง
maba

กระจก github อนุญาตให้เชื่อมโยงไปยังหมายเลขบรรทัดที่ระบุ: github.com/apache/maven-3/blob/trunk/maven-model-builder/src/… ไม่เช่นนั้นจะอยู่ใน svn ที่: svn.apache.org/repos/asf / maven / maven-3 / trunk / …
Martin Ellis

@MartinEllis ตกลงฉันได้อัปเดตคำตอบของฉันพร้อมลิงก์ด้วย ขอบคุณ!
maba

ฉันค้นหาแหล่งที่มาของ repo Maven ที่github.com/apache/maven จำนวนครั้งที่พบค่อนข้างน้อย (9) ไม่มีอะไรจะตั้งค่าคุณสมบัตินั้นโดยตรง มันต้องถูกจัดไว้ที่ไหนซักแห่ง! URL นี้แสดงผลการค้นหาที่ฉันเห็น: github.com/apache/maven/…
PatS

44

มันชี้ไปที่ไดเรกทอรีผลลัพธ์ระดับสูงสุดของคุณ (ซึ่งโดยค่าเริ่มต้นtarget):

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

แก้ไข: ดังที่ได้ชี้ให้เห็น Codehaus ตอนนี้เศร้าสิ้นดี คุณสามารถหารายละเอียดเกี่ยวกับคุณสมบัติเหล่านี้ได้จาก Sonatype ที่นี่:

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

หากคุณเคยพยายามที่จะส่งออกไดเรกทอรีอ้างอิงใน Maven คุณไม่ควรใช้ค่าที่แท้จริงเช่นเป้าหมาย / ชั้นเรียน แต่คุณควรใช้การอ้างอิงคุณสมบัติเพื่ออ้างถึงไดเรกทอรีเหล่านี้

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

sourceDirectory, scriptSourceDirectoryและtestSourceDirectoryจัดเตรียมการเข้าถึงไดเรกทอรีต้นทางสำหรับโครงการ outputDirectoryและtestOutputDirectoryให้การเข้าถึงไดเรกทอรีที่ Maven จะใส่ bytecode หรือสร้างผลลัพธ์อื่น ๆ directoryอ้างถึงไดเร็กทอรีที่มีไดเร็กทอรีเอาต์พุตทั้งหมดเหล่านี้


1
codehause.org โฮสติ้งถูกยกเลิกและลิงค์นี้ไม่ทำงานอีกต่อไป
Bartosz Firyn

ใช่จริงและเศร้า ฉันได้อัปเดตด้วยลิงก์ที่ใช้งานได้และอ้างถึงส่วนที่เกี่ยวข้องของหน้าที่เชื่อมโยง
sdouglass

7
... ดังนั้นproject.base.dirชี้ไปที่ไดเรกทอรีรากของโครงการที่ pom.xml อยู่ นั่นเป็นเหตุผลว่าทำไมหลังจากนั้นproject.build.directoryMaven จึงถูก${project.basedir}/targetกำหนด ขอบคุณพวกฉันไม่รู้เรื่องนี้เลย
evaldeslacasa

1
แม้ว่าดูเหมือนจะเป็นจริง แต่คุณได้รับข้อมูลนี้ได้อย่างไร: "project.base.dir ชี้ไปที่ไดเรกทอรีรากของโครงการที่ pom.xml เป็น" ฉันจะดูคำจำกัดความนี้ได้ที่ไหน
qartal

2
คิดว่าโครงการของคุณเรียกว่าโครงการ-A และภายใต้โครงการ-A เป็น pom.xml มีการประกาศแล้ว${project.build.sourceDirectory}ชี้ไปproject-A/src/main/java, ${project.build.scriptSourceDirectory}คะแนนไปproject-A/src/main/scripts, ${project.build.testSourceDirectory}คะแนนไปproject-A/src/test/java, ${project.build.directory}คะแนนไปproject-A/target, ${project.build.directory}คะแนนเพื่อproject-A/target/classes, จุดที่จะต้อง${project.build.testOutputDirectory} project-A/target/test-classes
sc30

4

คุณสามารถค้นหาคำตอบที่ทันสมัยที่สุดสำหรับค่าในโครงการของคุณเพียงดำเนินการ

mvn3 help:effective-pom

สั่งและค้นหา<build> ... <directory>ค่าของแท็กในผลลัพธ์หรือที่รู้จักใน pom ที่มีประสิทธิภาพ มันจะแสดงค่าของ Super POM ถ้าคุณไม่ได้เขียนทับ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.