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


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

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


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>

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.