maven-2 - than - maven-compiler-plugin
JAVA_HOME es destrozado por Maven (2)
Estoy adaptando muchos proyectos Java existentes con la construcción unificada de Maven. Como cada proyecto está maduro y ha establecido Ant based build, estoy usando maven-antrun-plugin
para ejecutar build.xml
existente de la siguiente manera:
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>compile</phase>
<configuration>
<tasks>
<ant antfile="build.xml" target="compile" />
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
Cuando ejecuto mvn compile
build falla con este mensaje:
[INFO] An Ant BuildException has occured: The following error occurred
while executing this line:
build.xml:175: Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK.
It is currently set to "C:/Java/jdk1.6.0_13/jre"
Lo que me desconcierta es
- Tengo
JAVA_HOME=C:/Java/jdk1.6.0_13
como parte de la configuración de mi entorno y cuando se ejecutamvn.bat
eso es exactamente el valor quemvn.bat
, sin embargo, como ve en el mensaje de error, aparece comoC:/Java/jdk1.6.0_13/jre
- Si corro
ant compile
todo compila muy bien
¿Significa que quizás maven-antrun-plugin
hace algo como set JAVA_HOME=%JAVA_HOME%/jre
? Busqué en mis archivos de lote / compilación no puedo encontrar dónde ocurre ese cambio
Esa es la desventaja de los enlaces externos en una respuesta aceptada. Codehaus se apagó y, por lo tanto, la solución desapareció. A modo de referencia, aquí está el contenido detrás del enlace; básicamente, solo necesita copiar el bloque <dependencies>...</dependencies>
a su plugin antrun ...
El complemento maven-antrun se ejecuta ant y JAVA_HOME se establece en el subdirectorio jre del JDK, incluso si el JAVA_HOME de la ejecución general es un JDK. En otro lugar, hay documentación sobre cómo crear una dependencia a nivel de proyecto para tools.jar de JDK, pero esto no ayuda a antrun, que es un complemento. El siguiente perfil hace el trabajo. El ''...'' en el camino pasa por el directorio ''jre'' al directorio lib.
<profiles>
<profile>
<id>tools.jar</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<dependencies>
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>1.5.0</version>
<scope>system</scope>
<systemPath>${java.home}/../lib/tools.jar</systemPath>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</profile>
Pude solucionar esto al poner la siguiente definición de propiedad en mi archivo ant build.xml:
<property name="build.compiler" value="extJavac"/>