Cómo leer un archivo de propiedades externo en Maven

127

¿Alguien sabe cómo leer un archivo x.properties en Maven. Sé que hay formas de usar el filtrado de recursos para leer un archivo de propiedades y establecer valores a partir de eso, pero quiero una forma en mi pom.xml como:

<properties file="x.properties"> 

</properties>

Hubo una discusión sobre esto: Propiedades externas de Maven

Dougnukem
fuente
Si solo tiene unos pocos valores, y diferentes usuarios necesitarán valores diferentes, considere colocar el valor en susettings.xml .
Raedwald

Respuestas:

95

Pruebe el complemento Properties Maven

Mike Pone
fuente
1
Creo que eso es lo que estoy buscando. No pude encontrar el 1.0-SNAPSHOT en los repositorios de Maven, pero hay un lanzamiento: 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
Enlace actual: mojo.codehaus.org/properties-maven-plugin/…
Jesse Glick
Versión actual: <groupId> org.codehaus.mojo </groupId> <artifactId> properties-maven-plugin </artifactId> <version> 1.0-alpha-2-SNAPSHOT </version> de snapshots.repository.codehaus.org
Huluvu424242
2
El enlace en la Respuesta se ha actualizado al nuevo enlace de @JesseGlick
Jon Adams
1
Tuve problemas con este complemento en Windows. Si alguien también tiene problemas, prueba kuali en su lugar.
Primero
56

Utilizando el complemento de propiedades Maven sugerido pude leer en un archivo buildNumber.properties que utilizo para versionar mis compilaciones.

  <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
fuente
9
¿podría mostrar el interior del archivo buildNumber.properties? ¡gracias!
victorio
Gracias por un ejemplo de trabajo. Sin embargo, por qué recibí un error 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
Cuando entro en esta sección <plugin> debajo de <plugins> después de </build> y antes de los complementos regulares de 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
@ BorisBrodski, ¿podría mostrar el interior del archivo buildNumber.properties? Parece que borraste algunos detalles.
Moustafa Mahmoud
@MoustafaMahmoud ¿por qué yo? Esa no es mi respuesta :) Pero puedo especular, que podría verse como 'my.great.product.version = 1.0.0'.
Boris Brodski, el
5

Esta respuesta a una pregunta similar describe cómo extender el complemento de propiedades para que pueda usar un descriptor remoto para el archivo de propiedades. El descriptor es básicamente un artefacto jar que contiene un archivo de propiedades (el archivo de propiedades se incluye en src / main / resources).

El descriptor se agrega como una dependencia al complemento de propiedades extendidas, por lo que está en la ruta de clase del complemento. El complemento buscará en el classpath el archivo de propiedades, leerá el contenido del archivo en una instancia de Propiedades y aplicará esas propiedades a la configuración del proyecto para que puedan usarse en otro lugar.

Vendedor rico
fuente