当前位置: 首页 > 面试题库 >

Maven使用gmaven-plugin编译Java + Groovy 1.7混合项目

伯英锐
2023-03-14
问题内容

按照以下两个最重要的答案:Maven依赖groovy。我正在尝试使用org.codehaus.gmaven的GMaven插件与Maven一起编译Java
6 +
Groovy混合项目。直到昨天,我们仍在使用旧1.6.0版本的Groovy(在最终使它工作后再也没有对其进行更改),但是由于1.7.0现在稳定了,我认为我们应该切换到该版本。

如果只是这么简单。.我现在遇到的问题似乎有两个方面:

  • Groovy 1.6仍然以默认方式被选中。(如下面的stacktrace中所示)
  • groovy:generateStubs因生成错误而停止:意外节点:Node [7:1,64,ANNOTATIONS]

有谁知道如何解决以上两个问题,或者可以提供一个工作的pom来编译与Maven Java 6混合在一起的Groovy 1.7代码?

关于使用gmaven / groovy.maven /
groovy.maven.gmaven编译Groovy的旧版本,有很多令人困惑/矛盾/过时的文档,这实际上并没有帮助。

作为参考,这是我的pom.xml和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>

堆栈跟踪:

[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

问题答案:

我有同样的问题。我缺少1.7的providerSelection配置设置。

尝试此配置,它应该适合您。

  <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>


 类似资料:
  • 本文向大家介绍使用maven编译Java项目实例,包括了使用maven编译Java项目实例的使用技巧和注意事项,需要的朋友参考一下 综述 本文演示了用Maven编译Java项目 需要 时间:15分钟 文本编辑器或者IDE JDK 6 或者更高版本 创建项目 本例主要为了展示Maven,所以Java的项目力求简单。 创建项目结构 选 择一个项目目录,在 *nix系统上使用下面语句 mkdir -p

  • 我试图编译一个MavenJava /Scala混合项目,它有一个Scala类,该类依赖于带有lombok注释的Javabean。我尝试将lombok jar文件添加到Scala编译器的引导类路径以及lombok代理中,但是编译器仍然无法找到生成的getters。Scala编译器是否有办法识别Lombok注释?如果没有,什么是好的解决方案? 请注意,我试图避免引入另一个maven项目,只是为了先编译

  • 删除.m2文件夹 重新安装Eclipse 在pom.xml上设置可执行文件 将生成选项设置为清除 pom.xml 没有一个奏效。有什么猜测吗?

  • 由于IntelliJ,我发现需要将以下选项传递给:

  • 我正在做一个类项目,需要使用Maven作为JavaFx项目的构建工具。 这是我的pom.xml设置,我在其中使用了2个插件。根据我的理解:是强制java jdk 1.8作为编译器,是自动下载javafx库。 另外,我的主启动器main.java文件位于。与文件夹处于同一级别。 然而,编译总是失败。 我不知道哪一步错了...任何想法都将不胜感激。

  • 问题内容: 我有一个琐碎的Maven项目: 当我通过构建项目时,它失败了: 有没有办法来解决这个问题? 问题答案: 可以将maven中使用的java版本配置为JDK / 11以下的任何版本,并使用来指定9,10,11的发行版而没有任何明确的依赖关系。