Search code examples
mavengroovygroovy-grape

Error when using groovy-eclipse-plugin and @Grab


Getting the following error when running mvn clean compile on a new system. It works fine on my local (windows) environment.

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

Both local and new system use Maven 3.2.5 and the POM is identical. Relevant excerpts below:

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

I tried changing groovy version to 2.4.3 but got the same error. Anyone seen anything like this before?


Solution

  • Having just encountered a similar issue, I found that I had two issues:

    Maven deps that failed a download

    A maven dependency (maven-assembly-plugin) had failed a download.

    Deleting the .lastUpdated files in your local m2 repository:

    #> 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 & repository ssl certificate

    Also your ~/.groovy/grapeConfig.xml file needs to be configured to tell groovy where to pull the dependencies from - in my case it was from a corporate nexus repository, which also meant i had to install the https certificate in the JRE cacerts file.

    How to test

    One suggestion to test you have everything set up correctly would be to call grape install on a test dependency and that will give you a clearer sense of what is wrong (grape is distributed as part of the groovy binaries, so include it on your path, or fully qualify its path):

    grape install javax.mail mail 1.5.0-b01