2010-01-07 5 views
36

Je suis en train de rééquiper des projets Java existants avec une version Maven unifiée. Étant donné que chaque projet est arrivé à maturité et a mis en place Ant build basé tout ce que je suis en utilisant maven-antrun-plugin pour exécuter build.xml existant comme suit:JAVA_HOME est corrompu par 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> 

Quand je lance mvn compile build échoue avec ce message:

[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" 

Quels sont les puzzles moi est

  1. Je JAVA_HOME=C:\Java\jdk1.6.0_13 dans le cadre de ma configuration de l'environnement et quand mvn.bat est exécuté qui est exa cte valeur que je me fais, mais comme vous le voyez dans le message d'erreur, il se présente comme C:\Java\jdk1.6.0_13\jre
  2. Si je cours ant compile tout compile très bien

Est-ce que ça veut dire que peut-être maven-antrun-plugin fait quelque chose comme set JAVA_HOME=%JAVA_HOME%\jre? Je cherchai mes fichiers batch/construire je ne peux pas trouver où ce changement se produit

Répondre

13

j'ai pu résoudre ce problème en mettant la définition de propriété suivante dans mon dossier de fourmi build.xml:

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

Cest le bas côté des liens externes dans une réponse acceptée. Codehaus s'est arrêté et la solution a disparu. Pour référence est ici le contenu derrière le lien - vous essentiellement suffit de copier le bloc <dependencies>...</dependencies> à votre plugin antrun ...

Le maven-antrun-plugin fonctionne fourmi avec JAVA_HOME réglé sur le jre sous-répertoire du JDK , même si le JAVA_HOME pour l'exécution globale est un JDK. Il existe d'autres documentations sur la façon de créer une dépendance au niveau du projet pour tools.jar du JDK, mais cela n'aide pas antrun, qui est un plugin. Le profil suivant effectue le travail. Le '..' dans le chemin passe devant le répertoire 'jre' dans le répertoire 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

Merci d'avoir agrandi le lien cassé! – wrgrs

+0

Vous monsieur, êtes le héros de l'Internet, merci, je cherchais pendant des heures. Ça marche. Je viens de passer à Java version 1.8.0. Ceci devrait être la réponse acceptée maintenant! – Hoto