2011-01-10 17 views
5

Sto provando a far chiamare Maven una build ANT per qualche codice legacy. La formica costruisce correttamente attraverso la formica. Tuttavia quando lo chiamo io usando il plugin formica Maven, non riesce con il seguente errore:Maven Ant BuildException con maven-antrun-plugin ... impossibile trovare il compilatore javac

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.6:run  (default) on project CoreServices: An Ant BuildException has occured: The following error occurred while executing this line: 
[ERROR] C:\dev\projects\build\build.xml:158: The following error occurred while executing this line: 
[ERROR] C:\dev\projects\build\build.xml:62: The following error occurred while executing this line: 
[ERROR] C:\dev\projects\build\build.xml:33: The following error occurred while executing this line: 
[ERROR] C:\dev\projects\ods\build.xml:41: Unable to find a javac compiler; 
[ERROR] com.sun.tools.javac.Main is not on the classpath. 
[ERROR] Perhaps JAVA_HOME does not point to the JDK. 
[ERROR] It is currently set to "C:\bea\jdk150_11\jre" 

mio javac esiste in C: \ bea \ jdk150_11 \ bin e questo funziona per tutte le altre cose. Non sono sicuro di dove Maven sta ottenendo questa versione di JAVA_HOME. JAVA_HOME in variabili ambientali di Windows è impostato su C: \ bea \ jdk150_11 \ come dovrebbe essere.

Il codice di Maven che sto usando per chiamare il build.xml è

<build> 
    <plugins> 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <version>1.6</version> 

    <executions> 
      <execution> 
      <phase>install</phase> 
      <configuration> 

       <target> 
    <ant antfile="../build/build.xml" target="deliver" > 
    </ant> 
       </target> 
      </configuration> 
      <goals> 
       <goal>run</goal> 
      </goals> 
      </execution> 
     </executions> 
    </plugin> 
    </plugins> 
    </build> 

risposta

15

Prima cosa: Perché si esegue lo script ANT in install fase e non in compile?

La seconda cosa: il tuo problema potrebbe essere causato dal fatto che Maven esegue JRE invece di JDK, nonostante il fatto che JAVA_HOME punti a JDK. Per risolvere questo problema, devi regolare manualmente le dipendenze per il plugin maven-antrun. Questo è solo un esempio:

<plugin> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <version>1.6</version> 
    <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> 
    <executions> 
     <execution> 
      <phase>compile</phase> 
      <configuration><target><ant/></target></configuration> 
      <goals><goal>run</goal></goals> 
     </execution> 
    </executions> 
</plugin> 
+4

Il collegamento di correzione è rotto. Immagino sia per questo che raccomandano di mettere il dettaglio nella risposta e il link. – wrgrs

+2

@Lukasz - è necessario correggere questa risposta o eliminarla, è piuttosto inutile collegare solo la risposta con un collegamento morto ora! –

+1

@JarrodRoberson Grazie per avermelo fatto notare. Ho incollato la configurazione di esempio per il plugin. – Lukasz

Problemi correlati