使用 groovy-eclipse-plugin 和 @Grab 时出错
Error when using groovy-eclipse-plugin and @Grab
在新系统上 运行 mvn clean compile
时出现以下错误。它在我的本地 (windows) 环境中运行良好。
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project visa-threatintel: Compilation failure: Compilation failure:
[ERROR] /path/to/Class.groovy:[2,2] 1. ERROR in /path/to/Class.groovy (at line 2)
[ERROR] @Grab(group="javax.mail", module="mail", version="1.5.0-b01", type="jar"),
[ERROR] ^^^
[ERROR] Groovy:Ambiguous method overloading for method org.apache.ivy.core.settings.IvySettings#load.
本地和新系统都使用Maven 3.2.5,POM完全相同。相关摘录如下:
<groovy.version>2.2.1</groovy.version>
<ivy.version>2.4.0</ivy.version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<extensions>true</extensions>
<configuration>
<!-- http://maven.apache.org/plugins/maven-compiler-plugin/ -->
<source>1.6</source>
<target>1.6</target>
<compilerId>groovy-eclipse-compiler</compilerId>
</configuration>
<dependencies>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-eclipse-compiler</artifactId>
<version>2.9.0-01</version>
</dependency>
<!-- 2.2.1 version isn't available as a release, so it needs to be acquired
from the codehaus nexus repository -->
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-eclipse-batch</artifactId>
<version>${groovy.version}-01-SNAPSHOT</version>
</dependency>
<!-- to allow @Grab annotations -->
<dependency>
<groupId>org.apache.ivy</groupId>
<artifactId>ivy</artifactId>
<version>${ivy.version}</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.9.1</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>src/main/groovy</source>
</sources>
</configuration>
</execution>
我尝试将 groovy 版本更改为 2.4.3,但出现了同样的错误。有人以前见过这样的东西吗?
刚刚遇到了类似的问题,我发现我有两个问题:
下载失败的 Maven 依赖
maven 依赖项 (maven-assembly-plugin) 下载失败。
正在删除本地 m2 存储库中的 .lastUpdated
文件:
#> find ~/.m2/repository -name *.lastUpdated
~/.m2/repository/org/apache/maven/plugins/maven-assembly-plugin/2.2-beta-5/maven-assembly-plugin-2.2-beta-5.pom.lastUpdated
#> find ~/.m2/repository -name *.lastUpdated -delete
grapeConfig.xml & 存储库 ssl 证书
您的 ~/.groovy/grapeConfig.xml
文件也需要配置为告诉 groovy 从哪里提取依赖项 - 在我的例子中,它来自公司的 nexus 存储库,这也意味着我必须安装JRE cacerts 文件中的 https 证书。
如何测试
测试您是否已正确设置所有内容的一个建议是在测试依赖项上调用 grape install
,这将使您更清楚地了解问题所在(葡萄作为 groovy 二进制文件,所以将它包含在你的路径中,或者完全限定它的路径):
grape install javax.mail mail 1.5.0-b01
在新系统上 运行 mvn clean compile
时出现以下错误。它在我的本地 (windows) 环境中运行良好。
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project visa-threatintel: Compilation failure: Compilation failure:
[ERROR] /path/to/Class.groovy:[2,2] 1. ERROR in /path/to/Class.groovy (at line 2)
[ERROR] @Grab(group="javax.mail", module="mail", version="1.5.0-b01", type="jar"),
[ERROR] ^^^
[ERROR] Groovy:Ambiguous method overloading for method org.apache.ivy.core.settings.IvySettings#load.
本地和新系统都使用Maven 3.2.5,POM完全相同。相关摘录如下:
<groovy.version>2.2.1</groovy.version>
<ivy.version>2.4.0</ivy.version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<extensions>true</extensions>
<configuration>
<!-- http://maven.apache.org/plugins/maven-compiler-plugin/ -->
<source>1.6</source>
<target>1.6</target>
<compilerId>groovy-eclipse-compiler</compilerId>
</configuration>
<dependencies>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-eclipse-compiler</artifactId>
<version>2.9.0-01</version>
</dependency>
<!-- 2.2.1 version isn't available as a release, so it needs to be acquired
from the codehaus nexus repository -->
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-eclipse-batch</artifactId>
<version>${groovy.version}-01-SNAPSHOT</version>
</dependency>
<!-- to allow @Grab annotations -->
<dependency>
<groupId>org.apache.ivy</groupId>
<artifactId>ivy</artifactId>
<version>${ivy.version}</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.9.1</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>src/main/groovy</source>
</sources>
</configuration>
</execution>
我尝试将 groovy 版本更改为 2.4.3,但出现了同样的错误。有人以前见过这样的东西吗?
刚刚遇到了类似的问题,我发现我有两个问题:
下载失败的 Maven 依赖
maven 依赖项 (maven-assembly-plugin) 下载失败。
正在删除本地 m2 存储库中的 .lastUpdated
文件:
#> find ~/.m2/repository -name *.lastUpdated
~/.m2/repository/org/apache/maven/plugins/maven-assembly-plugin/2.2-beta-5/maven-assembly-plugin-2.2-beta-5.pom.lastUpdated
#> find ~/.m2/repository -name *.lastUpdated -delete
grapeConfig.xml & 存储库 ssl 证书
您的 ~/.groovy/grapeConfig.xml
文件也需要配置为告诉 groovy 从哪里提取依赖项 - 在我的例子中,它来自公司的 nexus 存储库,这也意味着我必须安装JRE cacerts 文件中的 https 证书。
如何测试
测试您是否已正确设置所有内容的一个建议是在测试依赖项上调用 grape install
,这将使您更清楚地了解问题所在(葡萄作为 groovy 二进制文件,所以将它包含在你的路径中,或者完全限定它的路径):
grape install javax.mail mail 1.5.0-b01