วิธีอ่านไฟล์คุณสมบัติภายนอกใน Maven


127

ไม่มีใครรู้วิธีอ่านไฟล์ x.properties ใน Maven ฉันรู้ว่ามีวิธีใช้การกรองทรัพยากรเพื่ออ่านไฟล์คุณสมบัติและตั้งค่าจากสิ่งนั้น แต่ฉันต้องการวิธีใน pom.xml ของฉันเช่น:

<properties file="x.properties"> 

</properties>

มีการอภิปรายเกี่ยวกับเรื่องนี้: คุณสมบัติภายนอกของ Maven


หากคุณมีค่าเพียงไม่กี่ค่าและผู้ใช้ที่แตกต่างกันจะต้องการค่าที่แตกต่างกันให้พิจารณาใส่ค่าในsettings.xmlไฟล์.
Raedwald

คำตอบ:


95

ลองใช้ Properties Maven Plugin


1
ฉันคิดว่านั่นคือสิ่งที่ฉันกำลังมองหาฉันไม่พบ 1.0-SNAPSHOT ในที่เก็บ maven แต่มีรุ่น: mvnrepository.com/artifact/org.codehaus.mojo/… <dependency> <groupId> org.codehaus .mojo </groupId> <artifactId> properties-maven-plugin </artifactId> <version> 1.0-alpha-1 </version> </dependency>
Dougnukem

3
ลิงค์ปัจจุบัน: mojo.codehaus.org/properties-maven-plugin/…
Jesse Glick

เวอร์ชันปัจจุบัน: <groupId> org.codehaus.mojo </groupId> <artifactId> properties-maven-plugin </artifactId> <version> 1.0-alpha-2-SNAPSHOT </version> จากsnapshots.repository.codehaus.org
Huluvu424242

2
ลิงก์ในคำตอบได้รับการอัปเดตเป็นลิงก์ใหม่จาก @JesseGlick
Jon Adams

1
ฉันมีปัญหากับปลั๊กอินนี้ใน Windows ถ้าใครมีปัญหาก็ลองใช้kualiแทน
fnst

56

การใช้ปลั๊กอินคุณสมบัติ Maven ที่แนะนำฉันสามารถอ่านในไฟล์ buildNumber.properties ที่ฉันใช้เพื่อสร้างเวอร์ชันบิลด์ของฉัน

  <build>    
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>properties-maven-plugin</artifactId>
        <version>1.0-alpha-1</version>
        <executions>
          <execution>
            <phase>initialize</phase>
            <goals>
              <goal>read-project-properties</goal>
            </goals>
            <configuration>
              <files>
                <file>${basedir}/../project-parent/buildNumber.properties</file>
              </files>
            </configuration>
          </execution>
        </executions>
      </plugin>
   </plugins>

9
คุณช่วยแสดงด้านในของไฟล์ buildNumber.properties ได้ไหม ขอบคุณ!
victorio

ขอบคุณสำหรับตัวอย่างการทำงาน อย่างไรก็ตามเหตุใดฉันจึงได้รับข้อผิดพลาดPlugin execution not covered by lifecycle configuration: org.codehaus.mojo:properties-maven-plugin:1.0-alpha-1:read-project-properties (execution: default, phase: initialize)
WesternGun

เมื่อฉันเข้าสู่ส่วน <plugin> ภายใต้ <plugins> หลัง </build> และก่อนปลั๊กอิน maven ปกติฉันได้รับข้อผิดพลาดนี้:Plugin 'execution' not covered by lifecycle configuration: org.codehaus.mojo:properties-maven-plugin:1.0-alpha-1:read-project-properties (execution: default, phase: initialize)
PraNuta

@BorisBrodski คุณสามารถแสดงด้านในของไฟล์ buildNumber.properties ได้หรือไม่? ดูเหมือนว่าคุณจะลบรายละเอียดบางอย่าง
Moustafa Mahmoud

@MoustafaMahmoud ทำไมฉัน? นั่นไม่ใช่คำตอบของฉัน :) แต่ฉันอาจคาดเดาได้ว่ามันอาจดูเหมือน 'my.great.product.version = 1.0.0'
Boris Brodski

5

นี้เป็นคำตอบให้กับคำถามที่คล้ายกันอธิบายถึงวิธีการที่จะขยายคุณสมบัติปลั๊กอินเพื่อที่จะสามารถใช้บ่งระยะไกลสำหรับไฟล์คุณสมบัติ โดยทั่วไป descriptor นั้นเป็นส่วนของ jar ที่มีไฟล์คุณสมบัติ (ไฟล์คุณสมบัติจะรวมอยู่ใน src / main / resources)

ตัวอธิบายถูกเพิ่มเป็นการอ้างอิงกับปลั๊กอินคุณสมบัติเพิ่มเติมดังนั้นจึงอยู่ในคลาสพา ธ ของปลั๊กอิน ปลั๊กอินจะค้นหา classpath สำหรับไฟล์คุณสมบัติอ่านเนื้อหาของไฟล์ในอินสแตนซ์ Properties และใช้คุณสมบัติเหล่านั้นกับคอนฟิกูเรชันของโปรเจ็กต์เพื่อให้สามารถใช้ที่อื่นได้

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