Jak czytać zewnętrzny plik właściwości w Maven

127

Czy ktoś wie, jak czytać plik x.properties w Maven. Wiem, że istnieją sposoby wykorzystania filtrowania zasobów do odczytywania pliku właściwości i ustawiania z niego wartości, ale chcę mieć sposób w moim pom.xml, taki jak:

<properties file="x.properties"> 

</properties>

Odbyła się dyskusja na ten temat: Maven External Properties

Dougnukem
źródło
Jeśli masz tylko kilka wartości, a różni użytkownicy będą potrzebować różnych wartości, rozważ umieszczenie wartości w swoimsettings.xml .
Raedwald

Odpowiedzi:

95

Wypróbuj wtyczkę Properties Maven

Mike Pone
źródło
1
Myślę, że właśnie tego szukam Nie mogłem znaleźć 1.0-SNAPSHOT w repozytoriach maven, ale jest wersja: 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
Aktualny link: mojo.codehaus.org/properties-maven-plugin/…
Jesse Glick
Aktualna wersja: <groupId> org.codehaus.mojo </groupId> <artifactId> properties-maven-plugin </artifactId> <version> 1.0-alpha-2-SNAPSHOT </version> z snapshots.repository.codehaus.org
Huluvu424242
2
Link w odpowiedzi został zaktualizowany do nowego linku z @JesseGlick
Jon Adams
1
Miałem problemy z tą wtyczką w systemie Windows. Jeśli ktoś też ma problemy, wypróbuj kuali .
fnst
56

Korzystając z sugerowanej wtyczki właściwości Mavena, mogłem wczytać plik buildNumber.properties, którego używam do wersjonowania moich kompilacji.

  <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
źródło
9
czy możesz pokazać wnętrze pliku buildNumber.properties? Dziękuję Ci!
victorio
Dzięki za działający przykład. Jednak dlaczego otrzymałem błądPlugin execution not covered by lifecycle configuration: org.codehaus.mojo:properties-maven-plugin:1.0-alpha-1:read-project-properties (execution: default, phase: initialize)
WesternGun
Kiedy wchodzę do tej sekcji <plugin> pod <plugins> po </build> i przed zwykłymi wtyczkami 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)
pojawia
@BorisBrodski czy mógłbyś pokazać wnętrze pliku buildNumber.properties? Wygląda na to, że usunąłeś niektóre szczegóły.
Moustafa Mahmoud
@MoustafaMahmoud dlaczego ja? To nie moja odpowiedź :) Ale mogę spekulować, że mogłoby to wyglądać jak „my.great.product.version = 1.0.0”.
Boris Brodski
5

Ta odpowiedź na podobne pytanie opisuje, jak rozszerzyć wtyczkę właściwości, aby mogła używać zdalnego deskryptora dla pliku właściwości. Deskryptor jest w zasadzie artefaktem jar zawierającym plik właściwości (plik właściwości znajduje się w katalogu src / main / resources).

Deskryptor jest dodawany jako zależność do wtyczki rozszerzonych właściwości, więc znajduje się w ścieżce klas wtyczki. Wtyczka przeszuka ścieżkę klas w celu znalezienia pliku właściwości, odczyta zawartość pliku do instancji Właściwości i zastosuje te właściwości do konfiguracji projektu, aby można było ich użyć w innym miejscu.

Bogaty sprzedawca
źródło