you than running rather provided plugin perhaps mac jre jdk example compiler change are maven-2 ant maven

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

  1. Tengo JAVA_HOME=C:/Java/jdk1.6.0_13 como parte de la configuración de mi entorno y cuando se ejecuta mvn.bat eso es exactamente el valor que mvn.bat , sin embargo, como ve en el mensaje de error, aparece como C:/Java/jdk1.6.0_13/jre
  2. 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"/>