Comment lire un fichier de propriétés externes dans Maven

127

Quelqu'un sait-il lire un fichier x.properties dans Maven. Je sais qu'il existe des moyens d'utiliser le filtrage des ressources pour lire un fichier de propriétés et définir des valeurs à partir de cela, mais je veux un moyen dans mon pom.xml comme:

<properties file="x.properties"> 

</properties>

Il y a eu une discussion à ce sujet: Propriétés externes Maven

Dougnukem
la source
Si vous n'avez que quelques valeurs et que différents utilisateurs auront besoin de valeurs différentes, envisagez plutôt de mettre la valeur dans votresettings.xml .
Raedwald

Réponses:

95

Essayez le plugin Properties Maven

Mike Pone
la source
1
Je pense que c'est ce que je recherche Je n'ai pas pu trouver le 1.0-SNAPSHOT dans les référentiels maven mais il existe une version: 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
Version actuelle: <groupId> org.codehaus.mojo </groupId> <artifactId> properties-maven-plugin </artifactId> <version> 1.0-alpha-2-SNAPSHOT </version> de snapshots.repository.codehaus.org
Huluvu424242
2
Le lien dans la réponse a été mis à jour vers le nouveau lien de @JesseGlick
Jon Adams
1
J'ai eu des problèmes avec ce plugin sous Windows. Si quelqu'un a des problèmes aussi, essayez plutôt le kuali .
TVPN
56

En utilisant le plugin de propriétés Maven suggéré, j'ai pu lire dans un fichier buildNumber.properties que j'utilise pour versionner mes builds.

  <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
la source
9
pourriez-vous montrer l'intérieur du fichier buildNumber.properties? Merci!
victorio
Merci pour un exemple fonctionnel. Cependant, pourquoi j'ai eu une erreur dePlugin execution not covered by lifecycle configuration: org.codehaus.mojo:properties-maven-plugin:1.0-alpha-1:read-project-properties (execution: default, phase: initialize)
WesternGun
Lorsque j'entre dans cette section <plugin> sous <plugins> après </build> et avant les plugins Plugin 'execution' not covered by lifecycle configuration: org.codehaus.mojo:properties-maven-plugin:1.0-alpha-1:read-project-properties (execution: default, phase: initialize)
maven normaux
@BorisBrodski pourriez-vous montrer l'intérieur du fichier buildNumber.properties? Il semble que vous ayez supprimé certains détails.
Moustafa Mahmoud
@MoustafaMahmoud pourquoi moi? Ce n'est pas ma réponse :) Mais je peux spéculer, que cela pourrait ressembler à «my.great.product.version = 1.0.0».
Boris Brodski
5

Cette réponse à une question similaire décrit comment étendre le plugin de propriétés afin qu'il puisse utiliser un descripteur distant pour le fichier de propriétés. Le descripteur est essentiellement un artefact jar contenant un fichier de propriétés (le fichier de propriétés est inclus sous src / main / resources).

Le descripteur est ajouté en tant que dépendance au plugin de propriétés étendues afin qu'il se trouve sur le chemin de classe du plugin. Le plugin recherchera le chemin de classe pour le fichier de propriétés, lira le contenu du fichier dans une instance de Propriétés et appliquera ces propriétés à la configuration du projet afin qu'elles puissent être utilisées ailleurs.

Vendeur riche
la source