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


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

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>

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.