Cara membaca file properti eksternal di Maven

127

Adakah yang tahu cara membaca file x.properties di Maven. Saya tahu ada cara untuk menggunakan pemfilteran sumber daya untuk membaca file properti dan menetapkan nilai dari itu, tapi saya ingin cara di pom.xml saya seperti:

<properties file="x.properties"> 

</properties>

Ada beberapa diskusi tentang ini: Maven External Properties

Dougnukem
sumber
Jika Anda hanya memiliki beberapa nilai, dan pengguna yang berbeda akan membutuhkan nilai yang berbeda, pertimbangkan untuk memasukkan nilai tersebut ke dalamsettings.xml .
Raedwald

Jawaban:

95

Coba Plugin Properties Maven

Mike Pone
sumber
1
Saya pikir itulah yang saya cari, saya tidak dapat menemukan 1.0-SNAPSHOT di repositori maven tetapi ada rilis: 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
Tautan saat ini: mojo.codehaus.org/properties-maven-plugin/…
Jesse Glick
Versi saat ini: <groupId> org.codehaus.mojo </groupId> <artifactId> properti-maven-plugin </artifactId> <version> 1.0-alpha-2-SNAPSHOT </version> dari snapshots.repository.codehaus.org
Huluvu424242
2
Tautan dalam Jawaban telah diperbarui ke tautan baru dari @JesseGlick
Jon Adams
1
Saya punya masalah dengan plugin ini di Windows. Jika seseorang memiliki masalah juga, cobalah kuali .
pertama
56

Menggunakan plugin properti Maven yang disarankan, saya bisa membaca di file buildNumber.properties yang saya gunakan untuk versi build saya.

  <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>
Dougnukem
sumber
9
dapatkah Anda memperlihatkan bagian dalam file buildNumber.properties? Terima kasih!
victorio
Terima kasih atas contohnya. Namun, mengapa saya mendapatkan kesalahanPlugin execution not covered by lifecycle configuration: org.codehaus.mojo:properties-maven-plugin:1.0-alpha-1:read-project-properties (execution: default, phase: initialize)
WesternGun
Ketika saya memasukkan bagian <plugin> ini di bawah <plugins> setelah </build> dan sebelum plugin maven biasa, saya mendapatkan kesalahan ini: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 dapatkah Anda memperlihatkan bagian dalam file buildNumber.properties? Tampaknya Anda menghapus beberapa detail.
Moustafa Mahmoud
@MoustafaMahmoud mengapa saya? Itu bukan jawaban saya :) Tapi saya bisa berspekulasi, bahwa itu bisa terlihat seperti 'my.great.product.version = 1.0.0'.
Boris Brodski
5

Ini jawaban untuk pertanyaan serupa menjelaskan bagaimana untuk memperpanjang sifat Plugin sehingga dapat menggunakan deskriptor remote untuk file properti. Deskriptor pada dasarnya adalah sebuah artefak jar yang berisi file properti (file properti dimasukkan di bawah src / main / resources).

Deskriptor ditambahkan sebagai ketergantungan pada plugin properti extended sehingga berada di classpath plugin. Plugin akan mencari classpath untuk file properti, membaca konten file ke dalam instance Properties, dan menerapkan properti itu ke konfigurasi proyek sehingga mereka dapat digunakan di tempat lain.

Penjual Kaya
sumber