ใน Maven การproject.build.directory
อ้างอิงหมายถึงอะไร ฉันสับสนเล็กน้อยมันอ้างอิงไดเรกทอรีรหัสต้นฉบับหรือไดเรกทอรีเป้าหมายในโครงการ Maven หรือไม่?
ใน Maven การproject.build.directory
อ้างอิงหมายถึงอะไร ฉันสับสนเล็กน้อยมันอ้างอิงไดเรกทอรีรหัสต้นฉบับหรือไดเรกทอรีเป้าหมายในโครงการ Maven หรือไม่?
คำตอบ:
คุณสามารถค้นหาคุณสมบัติ 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 โลคัล
project.build.directory
ให้คุณ นั่นคือสิ่งที่ฉันต้องการแสดง
มันชี้ไปที่ไดเรกทอรีผลลัพธ์ระดับสูงสุดของคุณ (ซึ่งโดยค่าเริ่มต้นtarget
):
แก้ไข: ดังที่ได้ชี้ให้เห็น Codehaus ตอนนี้เศร้าสิ้นดี คุณสามารถหารายละเอียดเกี่ยวกับคุณสมบัติเหล่านี้ได้จาก Sonatype ที่นี่:
หากคุณเคยพยายามที่จะส่งออกไดเรกทอรีอ้างอิงใน 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
อ้างถึงไดเร็กทอรีที่มีไดเร็กทอรีเอาต์พุตทั้งหมดเหล่านี้
project.base.dir
ชี้ไปที่ไดเรกทอรีรากของโครงการที่ pom.xml อยู่ นั่นเป็นเหตุผลว่าทำไมหลังจากนั้นproject.build.directory
Maven จึงถูก${project.basedir}/target
กำหนด ขอบคุณพวกฉันไม่รู้เรื่องนี้เลย
${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
คุณสามารถค้นหาคำตอบที่ทันสมัยที่สุดสำหรับค่าในโครงการของคุณเพียงดำเนินการ
mvn3 help:effective-pom
สั่งและค้นหา<build> ... <directory>
ค่าของแท็กในผลลัพธ์หรือที่รู้จักใน pom ที่มีประสิทธิภาพ มันจะแสดงค่าของ Super POM ถ้าคุณไม่ได้เขียนทับ