proyecto - usando el plugin de compilación en el perfil de maven para construir módulos
maven tutorial español (1)
Tengo el proyecto principal "padre", que tiene tres módulos como:
<groupId>com.dummy.bla.bla</groupId>
<artifactId>parent</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>A</module>
<module>B</module>
<module>C</module>
</modules>
y tres módulos dependen uno del otro como una cadena:
A<--B<--C
Cuando ejecuto la compilación en Parent, primero generaré A-1.0-SNAPSHOT.jar, luego B-1.0-SNAPSHOT.jar, finalmente C-1.0-SNAPSHOT.jar.
Entonces el problema es que tengo otro perfil de experto para generar compilaciones nocturnas todos los días. En mi pom.xml padre tengo:
<build>
<profile>
<id>nightlybuild</id>
<finalName>${artifcateId}-${buildNumber}</finalName>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<executions>
<execution>
<phase>generate-resources</phase>
<goals>
<goal>create</goal>
</goals>
</execution>
</executions>
<configuration>
<doCheck>false</doCheck>
<doUpdate>false</doUpdate>
<format>{0,date,yyyy-MM-dd_HH-mm}_{1}</format>
<items>
<item>timestamp</item>
<item>${user.name}</item>
</items>
</configuration>
</plugin>
</build>
Entonces tengo un problema para construir todos los módulos usando el perfil "nighlybuild", porque primero genera A - $ {buildNumber} .jar, y luego cuando construye B, no busca A-1.0-SNAPSHOT.jar (porque bajo B / pom.xml Tengo A como dependencia con la versión 1.0-SNAPSHOT). ¿Hay alguna forma de que el pom.xml en B pueda tener algo así como:
if(normal build) {
dependency A version is: 1.0-SNAPSHOT
}
if(nightly build) {
dependency A version is: ${buildNumber}
}
Esta no es una buena práctica. Si está cambiando la versión, entonces realmente debe liberar sus artefactos, es decir, usar maven-release-plugin (aún puede hacer eso durante su compilación nocturna).
Pero para responder a su pregunta, nada realmente le impide mover su declaración de dependencia en el proyecto B a un perfil, aunque no creo que pueda usar las propiedades establecidas por los complementos dentro de la declaración de versión de dependencia.