2010-02-04 11 views
31

Jak w dwóch pierwszych odpowiedziach w: maven dependencies groovy. Próbuję skompilować mieszany projekt Java 6 + Groovy z Maven, używając wtyczki GMaven z org.codehaus.gmaven. Aż do wczoraj używaliśmy starej wersji Groovy 1.6.0 (nigdy jej nie zmieniliśmy po tym, jak w końcu działaliśmy), ale ponieważ 1.7.0 jest teraz stabilny, pomyślałem, że przerzucimy się na to.Maven skompilował mieszany projekt Java + Groovy 1.7, używając wtyczki gmaven

Jeśli tylko wszystko było takie proste .. Problem mam teraz napotykają wydają się być dwojakie:

  • Groovy 1.6 jest jakoś nadal odebrał jako domyślny. (Jak pokazano w poniższej stacktrace)
  • Groovy: generateStubs zatrzymuje się z błędem kompilacji: Nieoczekiwany węzeł node [7: 1,64 adnotacje]

Czy ktoś wie jak rozwiązać powyższe dwa problemy, lub może dostarczyć pracującą pom, aby skompilować kod z Maven?

Jest wiele zamieszania/wprost przeciwko/przestarzałej dokumentacji na kompilacji stare wersje Groovy użyciu gmaven/groovy.maven/groovy.maven.gmaven to naprawdę nie pomaga rzeczy teraz ..

Dla porównania, oto część mojego pom.xml & wyjście Maven -e:

<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 

Odpowiedz

24

miałem ten sam p roblem. Brakowało mi ustawienia konfiguracji providerSelection dla wersji 1.7.

Wypróbuj tę konfigurację i powinna działać.

<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

To załatwiło sprawę, dzięki! – Tim

+0

Jak wspomniał Joshua poniżej: Do pracy Groovy wymagany jest przynajmniej poziom źródłowy 1.4 (domyślnie Maven jest ustawiony na 1.3). – Tim

6

To działa na mnie, jak również z jednym małym Ponadto:

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

Może istnieje sposób, aby to domyślny?

+0

To dlatego, że domyślne ustawienie źródła Maven to 1.3, a Groovy wymaga co najmniej 1,4. Więc tak, masz rację, to też musi być zawarte w twoim pom. (Miałem już ten zestaw w moim super pom (tak jak większość programistów), więc nie został tu zawarty) – Tim

+0

OK. Nie stworzyłem jeszcze niestandardowego super-pom, chociaż przeczytałem kilka artykułów o tym, jak to się robi. –

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> 

Zobacz ten artykuł, to pomogło mi skompilować zarówno Java i groovy

Groovy Java compile together