ใน 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.directoryMaven จึงถูก${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 ถ้าคุณไม่ได้เขียนทับ