2010-02-04 7 views
31

Wie die oberen zwei Antworten in: maven dependencies groovy. Ich versuche mit Maven ein gemischtes Java 6 + Groovy-Projekt zu kompilieren, mit dem GMaven-Plugin von org.codehaus.gmaven. Bis gestern haben wir die alte 1.6.0 Version von Groovy benutzt (sie wurde nie geändert, nachdem wir es endlich funktionierten), aber da 1.7.0 jetzt stabil ist, dachte ich, wir würden zu diesem wechseln.Maven kompilieren gemischt Java + Groovy 1.7 Projekt, mit gmaven-plugin

Wenn nur die Dinge so einfach wäre .. Die Probleme, die ich jetzt bin Begegnung scheinen zweifach zu sein:

  • Groovy 1.6 ist irgendwie immer noch als Standard aufgenommen. (Als zeigen in der Stacktrace unten)
  • groovy: generateStubs mit einem Build-Fehler stoppt: Unerwartete Knoten: Knoten [7: 1,64, ANNOTATIONS]

Wer weiß, wie die beiden oben genannten Probleme zu lösen, oder kann eine funktionierende POM zur Verfügung stellen Java 6 Code mit Groovy 1.7 Code mit Maven gemischt?

zum Kompilieren alte Versionen von Groovy viele verwirrende/widersprüchliche/veraltete Dokumentation Es ist mit gmaven/groovy.maven/groovy.maven.gmaven, dass die Dinge jetzt zu helfen ..

als Referenz, hier ist Teil wirklich nicht ist meiner pom.xml & die Maven -e Ausgabe:

<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 

Antwort

24

hatte ich das gleiche p Problem. Ich habe die Konfigurationseinstellung providerSelection für 1.7 vermisst.

Versuchen Sie diese Konfiguration und es sollte für Sie arbeiten.

<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

, die den Trick tat, danke! – Tim

+0

Wie Joshua unten erwähnt: Für Groovy ist mindestens Source Level 1.4 erforderlich (der Maven Standard ist auf 1.3 gesetzt). – Tim

6

Das ist für mich auch mit einem kleinen Zusatz funktioniert:

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

Vielleicht gibt es eine Möglichkeit, dies ist die Standardeinstellung zu machen?

+0

Das liegt daran, dass die Maven-Standard-Quelleinstellung 1,3 ist, während Groovy mindestens 1,4 erfordert. Also ja, du hast Recht, das muss auch in deinem Pom enthalten sein. (Ich hatte dieses Set bereits in meinem Super Pom (wie die meisten Entwickler), also war es hier nicht enthalten) – Tim

+0

Okay. Ich habe noch keinen benutzerdefinierten Superpom gemacht, obwohl ich ein paar Artikel darüber gelesen habe, wie das gemacht wird. –

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> 

in diesem Artikel, es hat mir geholfen, sowohl Java zu kompilieren und groovy

Groovy Java compile together

Verwandte Themen