java - para - proyecto maven con netbeans
configuraciĆ³n predeterminada del compilador maven (4)
En este momento, estoy escribiendo una pequeña aplicación java por mi cuenta, con algunos archivos maven pom.xml. Quiero hacer todos mis paquetes maven para compilar con jdk 1.6, y no puedo encontrar una buena manera de hacerlo sin configurarlo manualmente en cada uno de los POMs. Estoy cansado de copiar y pegar
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
en cada archivo pom.xml que genero
¿Hay alguna manera más simple de resolver este problema?
Estoy harto de copiar y pegar
Sí, y debe usar la inheritance POM para evitar esto y configurar el maven-compiler-plugin
en el POM padre.
Otra opción sería usar la solución sugerida por @matt (y él @matt los pros y los contras del uso de settings.xml
).
En ambos casos, esta suele ser una configuración que me gusta comprobar usando maven-enforcer-plugin
y su regla requireJavaVersion
que se configuraría así:
<project>
[...]
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<executions>
<execution>
<id>enforce-versions</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireJavaVersion>
<version>1.6</version>
</requireJavaVersion>
</rules>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
[...]
</project>
Pero puede hacer más (como verificar la versión de maven). Muy útil.
Quiero hacer todos mis paquetes maven para compilar con jdk 1.6
Si se trata de un proyecto de varios módulos, simplemente ponga estas configuraciones en POM de nivel superior bajo pluginManagement
.
Si tiene muchos proyectos independientes solo copie y pegue esta configuración. Tenga cuidado con las soluciones "inteligentes" como configurar esto en algún lugar del mundo. Algún día querrás usar configuraciones de compilador diferentes para uno o dos de tus proyectos y la pesadilla comenzará :-)
Recuerda...
Mantenga las cosas lo más simple posible, pero no más simple .
Cree un proyecto pom solo ( <packaging>pom</packaging>
) que tenga la configuración del compilador (y cualquier otra configuración predeterminada) que desee. Puede tratarlo como cualquier otro proyecto (libérelo, impleméntelo en su repositorio de Maven, etc.).
Ponga una declaración parent
en la parte superior de sus archivos pom:
<parent>
<groupId><!-- parent''s group id --></groupId>
<artifactId><!-- parent''s artifact id --></artifactId>
<version><!-- parent''s version --></version>
</parent>
No ayuda mucho si todo lo que quiere establecer es la configuración del compilador. Pero si se encuentra configurando muchos complementos, informes y dependencias de la misma manera en todo el proyecto, puede crear uno principal para gobernarlos a todos.
Por cierto: tenga cuidado al declarar dependencies
y plugins
en su archivo pom principal. Por lo general, querrás favorecer a dependencyManagement
y pluginManagement
. Ver the documentation para más detalles.
Puede especificar este complemento y configuración en su ~/.m2/settings.xml
, que luego lo aplicará a todos los proyectos.
Sin embargo, esto tiene el inconveniente de hacer que sus proyectos ya no sean portátiles: intentar construir el mismo código con el mismo pom.xml fallará en otras máquinas que no tengan los mismos valores de settings.xml
que usted.