So lesen Sie eine externe Eigenschaftendatei in Maven

127

Weiß jemand, wie man eine x.properties-Datei in Maven liest? Ich weiß, dass es Möglichkeiten gibt, mithilfe der Ressourcenfilterung eine Eigenschaftendatei zu lesen und Werte daraus festzulegen, aber ich möchte eine Möglichkeit in meiner pom.xml wie:

<properties file="x.properties"> 

</properties>

Es gab einige Diskussionen darüber: Maven External Properties

Dougnukem
quelle
Wenn Sie nur wenige Werte haben und unterschiedliche Benutzer unterschiedliche Werte benötigen, sollten Sie stattdessen den Wert in Ihren Wert eingebensettings.xml .
Raedwald

Antworten:

95

Probieren Sie das Properties Maven Plugin aus

Mike Pone
quelle
1
Ich denke, das ist es, wonach ich suche. Ich konnte den 1.0-SNAPSHOT nicht in den Maven-Repositories finden, aber es gibt eine Veröffentlichung: mvnrepository.com/artifact/org.codehaus.mojo/… <dependency> <groupId> org.codehaus .mojo </ groupId> <artifactId> properties-maven-plugin </ifactId> <version> 1.0-alpha-1 </ version> </ dependency>
Dougnukem
3
Aktueller Link: mojo.codehaus.org/properties-maven-plugin/…
Jesse Glick
Aktuelle Version: <groupId> org.codehaus.mojo </ groupId> <artifactId> properties-maven-plugin </ifactId> <version> 1.0-alpha-2-SNAPSHOT </ version> von snapshots.repository.codehaus.org
Huluvu424242
2
Der Link in der Antwort wurde auf den neuen Link von @JesseGlick
Jon Adams
1
Ich hatte Probleme mit diesem Plugin unter Windows. Wenn jemand auch Probleme hat, probieren Sie stattdessen Kuali aus .
Am
56

Mit dem vorgeschlagenen Maven-Eigenschaften-Plugin konnte ich eine buildNumber.properties-Datei einlesen, mit der ich meine Builds versioniere.

  <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
quelle
9
Können Sie das Innere der Datei buildNumber.properties anzeigen? Danke!
victorio
Danke für ein funktionierendes Beispiel. Allerdings, warum ich einen Fehler vonPlugin execution not covered by lifecycle configuration: org.codehaus.mojo:properties-maven-plugin:1.0-alpha-1:read-project-properties (execution: default, phase: initialize)
WesternGun
Wenn ich diesen <plugin> Abschnitt unter <plugins> nach </ build> und vor den regulären Maven-Plugins eingebe, erhalte ich folgende Fehlermeldung: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 Könnten Sie das Innere der Datei buildNumber.properties anzeigen? Anscheinend haben Sie einige Details gelöscht.
Moustafa Mahmoud
@ MoustafaMahmoud warum ich? Das ist nicht meine Antwort :) Aber ich kann spekulieren, dass es wie 'my.great.product.version = 1.0.0' aussehen könnte.
Boris Brodski
5

Diese Antwort auf eine ähnliche Frage beschreibt, wie das Eigenschaften-Plugin erweitert wird, damit ein Remote-Deskriptor für die Eigenschaftendatei verwendet werden kann. Der Deskriptor ist im Grunde ein JAR-Artefakt, das eine Eigenschaftendatei enthält (die Eigenschaftendatei befindet sich unter src / main / resources).

Der Deskriptor wird als Abhängigkeit zum Plugin für erweiterte Eigenschaften hinzugefügt, sodass er sich im Klassenpfad des Plugins befindet. Das Plugin durchsucht den Klassenpfad nach der Eigenschaftendatei, liest den Inhalt der Datei in eine Eigenschafteninstanz und wendet diese Eigenschaften auf die Projektkonfiguration an, damit sie an anderer Stelle verwendet werden können.

Reicher Verkäufer
quelle