plugin example deploy maven build release-management

example - maven release plugin git



Maven-Leyendo una propiedad desde un archivo de propiedades externo (2)

Tengo un archivo de propiedad con el siguiente

junit.version=3.8.1 dbcp.version=5.5.27 oracle.jdbc.version=10.2.0.2.0

Intento leer esas propiedades de mi archivo pom como se muestra a continuación

<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>dbcp</groupId> <artifactId>dbcp</artifactId> <version>${dbcp.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc14</artifactId> <version>${oracle.jdbc.version}</version> <scope>provided</scope> </dependency>

y la configuración del plugin

<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>properties-maven-plugin</artifactId> <executions> <!-- Associate the read-project-properties goal with the initialize phase, to read the properties file. --> <execution> <phase>initialize</phase> <goals> <goal>read-project-properties</goal> </goals> <configuration> <files> <file>../live.properties</file> </files> </configuration> </execution> </executions> </plugin>

Me parece que cuando ejecuto mvn clean install no encuentra las propiedades, en su lugar aparece los siguientes errores:

''dependencies.dependency.version'' for junit:junit:jar must be a valid version but is ''${junit.version}''. @ line 23, column 16 ''dependencies.dependency.version'' for dbcp:dbcp:jar must be a valid version but is ''${dbcp.version}''. @ line 31, column 12 ''dependencies.dependency.version'' for com.oracle:ojdbc14:jar must be a valid version but is ''${oracle.jdbc.version}''. @ line 37, column 13

Los fallos anteriores parecen estar en situaciones en las que me refiero a la propiedad cuando declaro la dependencia. Encontré que en otras situaciones la propiedad se lee del archivo. Por ejemplo, funciona si uso una propiedad en la etiqueta de la versión del proyecto (no en la versión de dependencia)

Parece que la propiedad no se lee del archivo si se hace referencia a la declaración de dependencia, pero se lee si se hace referencia desde cualquier otro lugar. ¿Algunas ideas?


La fase de initialize no es parte del ciclo de vida limpio . También debe vincular el complemento de propiedades a pre-clean fase de pre-clean .

Sin embargo, la resolución de dependencia se ejecuta antes de resolver y ejecutar otros complementos, por lo que su enfoque no funcionará.

La forma correcta de lidiar con eso sería mover las versiones de dependencia a un pom.xml primario y usar el mismo pom primario en ambos proyectos.


Puedes definir así:

<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>properties-maven-plugin</artifactId> <version>1.0-alpha-2</version> <executions> <execution> <id>pre-clean-config</id> <phase>pre-clean</phase> <goals> <goal>read-project-properties</goal> </goals> <configuration> <files> <file>config.properties</file> </files> </configuration> </execution> <execution> <id>initialize-config</id> <phase>initialize</phase> <goals> <goal>read-project-properties</goal> </goals> <configuration> <files> <file>config.properties</file> </files> </configuration> </execution> </executions> </plugin>