2010-02-04 14 views
31

De acuerdo con los dos mejores respuestas de: maven dependencies groovy. Estoy intentando compilar un proyecto mixto de Java 6 + maravilloso con Maven, utilizando el GMaven-plugin desde org.codehaus.gmaven. Hasta ayer estábamos usando la antigua versión del maravilloso 1.6.0 (nunca cambió después de que finalmente conseguimos trabajo), pero desde 1.7.0 ahora es estable pensé que podríamos cambiar a ese.Maven compilar proyecto mixto Java + Groovy 1.7, utilizando gmaven-plugin

Si las cosas fueran así de simple .. Los problemas Ahora estoy encontrando parece ser doble:

  • Groovy 1.6 está de alguna manera todavía recogido como predeterminado. (Como se muestra en la StackTrace abajo)
  • maravilloso: generateStubs se detiene con un error de compilación: nodo inesperado: Nodo [7: 1,64, ANOTACIONES]

¿Alguien sabe cómo resolver los dos problemas anteriores, o puede proporcionar un pom de trabajo para compilar código Java 6 entremezclado con Groovy 1.7 código con Maven?

Hay una gran cantidad de documentación que contradice confuso// obsoleta en la compilación de las versiones antiguas de Groovy usando gmaven/groovy.maven/groovy.maven.gmaven que realmente no está ayudando a las cosas en este momento ..

Como referencia, aquí está parte de mi pom.xml & la salida de 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 

Respuesta

24

que tenía el mismo p roblem. Me faltaba la configuración de configuración providerSelection para 1.7.

Pruebe esta configuración y debería funcionar para usted.

<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

Que hizo el truco, gracias! – Tim

+0

Como mencionó Joshua a continuación: Al menos se requiere un nivel de fuente 1.4 para que Groovy también funcione (el valor predeterminado de Maven es 1.3). – Tim

6

que funciona para mí, así como con una pequeña adición:

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

Tal vez hay una manera de hacer esto el defecto?

+0

Eso se debe a que la configuración de fuente predeterminada de Maven es 1.3, mientras que Groovy requiere al menos 1.4. Así que sí, tienes razón, esto tiene que ser incluido en tu pom también. (Ya tenía este conjunto en mi super pom (como lo harán la mayoría de los desarrolladores), por lo que no se incluyó aquí) – Tim

+0

Bien. Todavía no he hecho un superpom personalizado, aunque he leído algunos artículos sobre cómo se hace eso. –

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> 

Ver este artículo, me ayudó a compilar Java y maravilloso

Groovy Java compile together

Cuestiones relacionadas