2010-01-07 16 views
36

Estoy adaptando muchos proyectos Java existentes con la construcción unificada de Maven. Dado que cada proyecto es maduro y ha establecido Hormiga de construcción basada en todo lo que estoy usando para ejecutar maven-antrun-pluginbuild.xml existente de la siguiente manera:JAVA_HOME se destruye por Maven

 <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 corro mvn compile generación 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" 

¿Qué rompecabezas me es

  1. tengo JAVA_HOME=C:\Java\jdk1.6.0_13 como parte de mi configuración del entorno y cuando se ejecuta mvn.bat que es exa ctly valor estoy consiguiendo, sin embargo, como se ve en el mensaje de error que aparece como C:\Java\jdk1.6.0_13\jre
  2. Si me quedo ant compile todo se compila bien

¿Quiere decir que tal vez maven-antrun-plugin hace algo como set JAVA_HOME=%JAVA_HOME%\jre? Busqué mi lote/construcción archivos no puedo encontrar donde se produce ese cambio

Respuesta

13

yo era capaz de solucionar este problema poniendo la siguiente definición de la propiedad en mi archivo build.xml hormiga:

<property name="build.compiler" value="extJavac"/> 
18

Esa es la baja lado de los enlaces externos en una respuesta aceptada. Codehaus se apagó y, por lo tanto, la solución desapareció. Como referencia aquí es el contenido detrás de la relación - que, básicamente, sólo tiene que copiar el bloque <dependencies>...</dependencies> a su plugin antRun ...

El experto-antRun-plugin se ejecuta hormiga con JAVA_HOME establece en el jre subdirectorio del JDK , incluso si el JAVA_HOME para la ejecución general es un JDK. Existe documentación en otro lugar 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> 
+1

Gracias por ampliar el enlace roto! – wrgrs

+0

Usted señor, es el héroe de Internet, gracias, estaba buscando esto durante horas. Funciona. Acabo de cambiar a la versión 1.8.0 de Java. ¡Esta debería ser la respuesta aceptada ahora! – Hoto

Cuestiones relacionadas