我正在尝试使用groovy创建一个maven插件。我想使用groovy 1.8或更高版本。
如果我使用的话,我已经跟着these instructions并且工作正常:
<groupId>org.codehaus.groovy.maven</groupId>
<artifactId>gmaven-plugin</artifactId>
<version>1.0-rc-4</version>
这构建我的插件,我可以在其他项目中使用它。
然而,这给出了一个旧版本的groovy(1.5.7)。要切换到更新版本,我尝试使用新版本和providerSelection:
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>gmaven-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<goals>
<goal>generateStubs</goal>
<goal>compile</goal>
<goal>generateTestStubs</goal>
<goal>testCompile</goal>
</goals>
<configuration>
<providerSelection>1.8</providerSelection>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.codehaus.gmaven.runtime</groupId>
<artifactId>gmaven-runtime-1.8</artifactId>
<version>1.5</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.8.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
</plugin>
但是当我构建我的插件时,我会收到警告:
[WARNING] Deprecation Alert:
[WARNING] No mojo descriptors were found in this project which has a packaging type of maven-plugin.
[WARNING] In future versions of the plugin tools, this will fail the build.
[WARNING] If this project is an archetype, change the packaging type from maven-plugin to maven-archetype.
当我尝试使用我的插件时,maven根本不会调用我的插件;我猜这是因为缺少插件描述符。
有没有人能够使用groovy成功构建maven插件,版本为1.8或更高?
PS:我也查看了groovy-eclipse-compiler插件而不是gmaven,但我似乎总是得到上面的警告。
答案 0 :(得分:1)
那是对的。如果你阅读the code,你会发现gmaven-mojo被硬编码为使用Groovy 1.5。这样做是为了能够与插件的潜在用户提供最大的兼容性(因为Groovy 1.6需要Java 5而Groovy 2.3需要Java 6)。 GMaven不再维护,所以不要期望改变(抱歉)。
大多数工具(如GMavenPlus Groovyc Ant任务)不支持这一点的原因是Groovy的官方模型类没有保留Javadoc(它持有Maven 2&#39;注释像标记)。 GMaven通过在内部分析Groovy的代码来解决这个问题。 Maven的Groovy-Eclipse插件并不支持这一点,因为它根本不会创建存根,所以Maven 2没有用来进行连接。有趣的是,他们还分叉了Groovy的代码,但出于其他原因。
以下是您的选择:
如果你去了Maven 3路线,你可能需要添加
<skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
到你的maven-plugin-plugin配置。