2010-02-04 6 views
31

Come per le prime due risposte in: maven dependencies groovy. Sto cercando di compilare un progetto misto Java 6 + Groovy con Maven, usando il plugin GMaven da org.codehaus.gmaven. Fino a ieri stavamo usando la vecchia versione 1.6.0 di Groovy (non l'ho mai modificata dopo averla finalmente fatta funzionare), ma dal momento che lo 1.7.0 è stabile ora ho pensato di passare a quello.Maven compila il progetto misto Java + Groovy 1.7, utilizzando gmaven-plugin

Se solo le cose fossero così semplici .. I problemi ora sto incontrando sembrano essere duplice:

  • Groovy 1.6 è in qualche modo ancora raccolto come predefinito. (Come mostrato nella stacktrace sotto)
  • groove: generateStubs ferma con un errore di generazione: nodo imprevisto: Nodo [7: 1,64, annotazioni]

Qualcuno sa come risolvere questi due problemi, o può fornire un pom di lavoro per compilare il codice Java 6 mescolato con il codice Groovy 1.7 con Maven?

C'è un sacco di/contraddicendo documentazione confusione/obsoleto sulla compilazione di vecchie versioni di Groovy usando gmaven/groovy.maven/groovy.maven.gmaven che non è realmente aiutare le cose in questo momento ..

Per riferimento, ecco parte della mia pom.xml & l'uscita -e Maven:

<dependencies> 
    <dependency> 
     <groupId>org.codehaus.groovy</groupId> 
     <artifactId>groovy-all</artifactId> 
     <version>1.7.0</version> 
    </dependency> 
</dependencies> 
<build> 
    <plugins> 
     <plugin> 
      <groupId>org.codehaus.gmaven</groupId> 
      <artifactId>gmaven-plugin</artifactId> 
      <version>1.2</version> 
      <dependencies> 
       <dependency> 
        <groupId>org.codehaus.gmaven.runtime</groupId> 
        <artifactId>gmaven-runtime-1.7</artifactId> 
        <version>1.2</version> 
       </dependency> 
       <dependency> 
        <groupId>org.codehaus.groovy</groupId> 
        <artifactId>groovy-all</artifactId> 
        <version>1.7.0</version> 
       </dependency> 
      </dependencies> 
      <executions> 
       <execution> 
        <goals> 
         <goal>generateStubs</goal> 
         <goal>compile</goal> 
         <goal>generateTestStubs</goal> 
         <goal>testCompile</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

Stacktrace:

[INFO] ------------------------------------------------------------------------ 
[INFO] Building Client 
[INFO] task-segment: [clean, package] 
[INFO] ------------------------------------------------------------------------ 
[INFO] [clean:clean {execution: default-clean}] 
[INFO] [groovy:generateStubs {execution: default}] 
[INFO] ------------------------------------------------------------------------ 
[ERROR] BUILD ERROR 
[INFO] ------------------------------------------------------------------------ 
[INFO] Unexpected node: Node[7:1,64,ANNOTATIONS] 

[INFO] ------------------------------------------------------------------------ 
[INFO] Trace 
org.apache.maven.lifecycle.LifecycleExecutionException: Unexpected node: Node[7:1,64,ANNOTATIONS] 
     at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:719) 
     at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556) 
     at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535) 
     at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387) 
     at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348) 
     at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180) 
     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328) 
     at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138) 
     at org.apache.maven.cli.MavenCli.main(MavenCli.java:362) 
     at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:616) 
     at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) 
     at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) 
     at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) 
     at org.codehaus.classworlds.Launcher.main(Launcher.java:375) 
Caused by: org.apache.maven.plugin.MojoExecutionException: Unexpected node: Node[7:1,64,ANNOTATIONS] 
     at org.codehaus.gmaven.plugin.MojoSupport.execute(MojoSupport.java:85) 
     at org.codehaus.gmaven.plugin.stubgen.AbstractGenerateStubsMojo.execute(AbstractGenerateStubsMojo.java:60) 
     at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490) 
     at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694) 
     ... 17 more 
Caused by: org.codehaus.gmaven.runtime.support.stubgen.UnexpectedNodeException: Unexpected node: Node[7:1,64,ANNOTATIONS] 
     at org.codehaus.gmaven.runtime.support.stubgen.parser.NodeSupport.ensure(NodeSupport.java:96) 
     at org.codehaus.gmaven.runtime.support.stubgen.model.ModelFactorySupport.identifier(ModelFactorySupport.java:896) 
     at org.codehaus.gmaven.runtime.support.stubgen.model.ModelFactorySupport.importDef(ModelFactorySupport.java:185) 
     at org.codehaus.gmaven.runtime.support.stubgen.model.ModelFactorySupport.process(ModelFactorySupport.java:122) 
     at org.codehaus.gmaven.runtime.support.stubgen.model.ModelFactorySupport.create(ModelFactorySupport.java:90) 
     at org.codehaus.gmaven.runtime.support.stubgen.model.ModelFactorySupport.create(ModelFactorySupport.java:61) 
     at org.codehaus.gmaven.runtime.v1_6.StubCompilerFeature$StubCompilerImpl.render(StubCompilerFeature.java:101) 
     at org.codehaus.gmaven.runtime.v1_6.StubCompilerFeature$StubCompilerImpl.compile(StubCompilerFeature.java:90) 
     at org.codehaus.gmaven.plugin.stubgen.AbstractGenerateStubsMojo.compile(AbstractGenerateStubsMojo.java:160) 
     at org.codehaus.gmaven.plugin.stubgen.AbstractGenerateStubsMojo.process(AbstractGenerateStubsMojo.java:131) 
     at org.codehaus.gmaven.plugin.ComponentMojoSupport.doExecute(ComponentMojoSupport.java:60) 
     at org.codehaus.gmaven.plugin.MojoSupport.execute(MojoSupport.java:69) 
     ... 20 more 

risposta

24

ho avuto lo stesso p roblem. Mi mancava l'impostazione di configurazione providerSelection per 1.7.

Prova questa configurazione e dovrebbe funzionare per te.

<plugin> 
     <groupId>org.codehaus.gmaven</groupId> 
     <artifactId>gmaven-plugin</artifactId> 
     <version>1.2</version> 
     <configuration> 
     <providerSelection>1.7</providerSelection> 
     </configuration> 
     <dependencies> 
      <dependency> 
      <groupId>org.codehaus.gmaven.runtime</groupId> 
      <artifactId>gmaven-runtime-1.7</artifactId> 
      <version>1.2</version> 
      <exclusions> 
       <exclusion> 
       <groupId>org.codehaus.groovy</groupId> 
       <artifactId>groovy-all</artifactId> 
       </exclusion> 
      </exclusions> 
      </dependency> 
      <dependency> 
      <groupId>org.codehaus.groovy</groupId> 
      <artifactId>groovy-all</artifactId> 
      <version>1.7.0</version> 
      </dependency> 
     </dependencies> 
     <executions> 
      <execution> 
       <goals> 
        <goal>generateStubs</goal> 
        <goal>compile</goal> 
        <goal>generateTestStubs</goal> 
        <goal>testCompile</goal> 
       </goals> 
      </execution> 
     </executions> 
    </plugin> 
+0

Che ha fatto il trucco, grazie! – Tim

+0

Come Giosuè menzionato qui sotto: Almeno il livello di sorgente 1.4 è necessario per Groovy per funzionare (il default di Maven è impostato su 1.3). – Tim

6

che funziona per me e con una piccola aggiunta:

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <configuration> 
       <source>1.5</source> 
       <target>1.5</target> 
      </configuration> 
     </plugin> 

Forse c'è un modo per rendere questo il default?

+0

Questo perché l'impostazione predefinita di Maven è 1.3, mentre Groovy richiede almeno 1.4. Quindi sì, hai ragione, questo deve essere incluso anche nel tuo pom. (Avevo già questo set nel mio super pom (come faranno molti sviluppatori), quindi non è stato incluso qui) – Tim

+0

Ok. Non ho ancora creato un super-pom personalizzato, anche se ho letto alcuni articoli su come è fatto. –

0
<plugins> 
<plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.5.1</version> 
       <configuration> 
        <source>1.7</source> 
        <target>1.7</target> 
        <compilerId>groovy-eclipse-compiler</compilerId>      
       </configuration> 
<dependencies> 
     <dependency> 
     <groupId>org.codehaus.groovy</groupId> 
     <artifactId>groovy-eclipse-compiler</artifactId> 
     <version>2.8.0-01</version> 
     </dependency> 
     <dependency> 
     <groupId>org.codehaus.groovy</groupId> 
     <artifactId>groovy-eclipse-batch</artifactId> 
     <version>2.1.5-03</version> 
     </dependency> 
</dependencies>    
      </plugin> </plugins> 

veda questo articolo, mi ha aiutato a compilare Java e Groovy

Groovy Java compile together

Problemi correlati