รายการคุณสมบัติของ Maven ที่กำหนดไว้ล่วงหน้าอยู่ที่ไหน


125

ฉันรู้ว่ามีรายการคุณสมบัติของ Maven ที่กำหนดไว้ล่วงหน้าทั้งหมด (คุณก็รู้ว่าชอบproject.build.sourceEncodingหรือproject.build.sourceDirectory) ฉันเคยเห็นรายการ แต่ฉันไม่พบอีกครั้ง

คำตอบ:


132

คุณหมายถึงอันนี้หรือเปล่า?

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

ฉันย้ายเนื้อหาไปที่ repo GitHub ด้วย:

https://github.com/cko/predefined_maven_properties/blob/master/README.md


1
โดยปกติแล้วเมื่อคุณแก้ไข pom.xml ใน Intellij IDEA จะช่วยได้มากโดยการให้ตัวเลือกสำหรับสิ่งที่ดูเหมือนคุณสมบัติของ Maven (เช่น${...})
Kedar Mhaswade

วิธีใช้ mvn: Effective-pom เป็นเครื่องมือที่ยอดเยี่ยมสำหรับการค้นหาคุณสมบัติที่มีอยู่ maven.apache.org/plugins/maven-help-plugin/…
Peter Kahn

1
ตรวจสอบหน้านี้ใน Maven wiki: cwiki.apache.org/confluence/display/MAVEN/…
Guss

ไม่รวม "ทุกอย่าง" เหมือน[WARNING] The expression ${artifactId} is deprecated. Please use ${project.artifactId} instead.แต่รวมถึงส่วนใหญ่;)
rogerdpack


26

การดู "POM ที่มีประสิทธิภาพ" อาจช่วยได้เช่นกัน ตัวอย่างเช่นหากคุณต้องการทราบว่าเส้นทางนี้มีไว้เพื่ออะไร${project.build.sourceDirectory}

คุณจะพบ XML ที่เกี่ยวข้องใน POM ที่มีประสิทธิภาพเช่น: <project> <build> <sourceDirectory>/my/path</sourceDirectory>

มีประโยชน์เช่นกัน - คุณสามารถทำการประเมินคุณสมบัติแบบเรียลไทม์ผ่านการดำเนินการบรรทัดคำสั่งmvn help:evaluateในขณะที่อยู่ใน dir เดียวกันกับ POM


ดูเหมือนว่าบางส่วนมาจาก
แผนผัง

11

ผมคิดว่าเป็นสถานที่ที่ดีที่สุดที่จะดูเป็นซูเปอร์ POM

ตัวอย่างเช่นในขณะที่เขียนการอ้างอิงที่เชื่อมโยงจะแสดงคุณสมบัติบางอย่างระหว่างบรรทัด 32 - 48

การตีความนี้เป็นไปตาม XPath เป็น.คุณสมบัติที่ใช้ตัวคั่น

ตัวอย่างเช่น:

${project.build.testOutputDirectory} == ${project.build.directory}/test-classes

และ:

${project.build.directory} == ${project.basedir}/target

ดังนั้นเราจึงพบว่า:

${project.build.testOutputDirectory} == ${project.basedir}/target/test-classes

(หากต้องการอ้างอิงไดเร็กทอรีทรัพยากรโปรดดูคำถาม stackoverflow นี้ )


<project>
    <modelVersion>4.0.0</modelVersion>
    .
    .
    .
    <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>

6

ฉันเบื่อที่จะเห็นหน้านี้พร้อมกับการอ้างอิงถึงหน้า Codehaus ที่เลิกใช้ไปแล้วในตอนนี้ดังนั้นฉันจึงถามในรายชื่ออีเมลของผู้ใช้ Mavenและได้รับคำตอบที่เป็นปัจจุบันมากขึ้น

ฉันจะบอกว่าคำตอบที่ดีที่สุด (และเชื่อถือได้มากที่สุด) ที่มีอยู่ในลิงก์ของฉันด้านบนคือคำตอบที่Hervé BOUTEMY:

นี่คือข้อมูลอ้างอิงหลัก: http://maven.apache.org/ref/3-LATEST/maven-model-builder/

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


3
คำถามที่ถามหาลิงค์ดังนั้นฉันคิดว่าข้อกังวลของคุณถูกวางผิดที่ คำถามนี้ไม่ได้ถามว่า "ฉันจะทำ X ได้อย่างไร" แต่ "ฉันจะหา X ได้ที่ไหน"
Steve Cohen

2
อ๊ะคุณพูดถูก - เป็นคำถามที่ไม่เข้ากับไซต์นี้ :-) ขอบคุณสำหรับการแจ้งเตือน - โหวตให้ปิด
kleopatra

1
แต่ก็ยังเป็นคำถามที่เกิดขึ้นครั้งแล้วครั้งเล่าตามที่ได้รับการยอมรับอย่างง่ายดายในคำตอบมากมายที่โพสต์ในรายชื่ออีเมลของฉันได้รับ .. ประเด็นก็คือ Maven ไม่ได้จัดทำเอกสารเกี่ยวกับพื้นที่นี้ไว้อย่างดีหรือรัดกุมเพียงพอ ควรมีหน้าเว็บที่แสดงอย่างชัดเจนบนเว็บไซต์ของพวกเขาสำหรับข้อมูลประเภทนี้และไม่มี ยังไม่ชัดเจนในทันทีแม้จากลิงก์เหล่านี้องค์ประกอบใด ๆ ของการอ้างอิง POM หรือที่อื่น ๆ ที่กล่าวถึงสามารถแปลงเป็นนิพจน์ $ {dotted.notation} และใช้ในไฟล์ POM คำถามนี้มีจุดประสงค์ที่เป็นประโยชน์และจำเป็นต้องได้รับการปรับปรุงหากมีการย้ายอีกครั้ง
Steve Cohen

1
การขอทรัพยากรภายนอกอยู่นอกขอบเขตของไซต์นี้หากทุกคนเล่นตามกฎจะไม่มีคำถามX อยู่ที่ไหน ;-)
kleopatra

3
ฉันไม่เข้าใจกฎบางครั้ง เป็นคำถามที่ถูกต้องอย่างสมบูรณ์และที่ผ่านมาผู้คนก็เต็มใจที่จะตอบคำถามนี้มากกว่า ด้วยการเป็นผู้ยึดติดกับกฎดังกล่าว Stack Overflow จะตัดจมูกของมันออกไปเพื่อให้ใบหน้าของมันดูแตก
Steve Cohen

3

ลิงค์นี้แสดงวิธีแสดงรายการคุณสมบัติที่ใช้งานทั้งหมด: http://skillshared.blogspot.co.uk/2012/11/how-to-list-down-all-maven-available.html

โดยสรุปให้เพิ่มข้อกำหนดปลั๊กอินต่อไปนี้ใน POM ของคุณจากนั้นเรียกใช้mvn install:

<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.7</version>
    <executions>
        <execution>
            <phase>install</phase>
            <configuration>
                <target>
                    <echoproperties />
                </target>
            </configuration>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
    </executions>
</plugin>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.