首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Groovy任务NoSuchMethodError

Groovy任务NoSuchMethodError
EN

Stack Overflow用户
提问于 2022-10-24 12:00:28
回答 1查看 25关注 0票数 0

我正在尝试groovy的ant任务,并不断地遇到这种奇怪的版本错配。我只想实现groovy任务从外部文件执行代码。

我的设置:

档案:

代码语言:javascript
复制
C:\tmp\groovy-ant-test\ 
   |_pom.xml
   |_task.groovy

pom.xml

代码语言:javascript
复制
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>test</groupId>
    <artifactId>test</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.8</version>
                <executions>
                    <execution>
                        <phase>compile</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <target>
                                <property name="compile_classpath" refid="maven.compile.classpath" />
                                <echo message="compile classpath: ${compile_classpath}" />

                                <taskdef resource="org/codehaus/groovy/antlib.xml">
                                    <classpath refid="maven.compile.classpath"/>
                                </taskdef>
                                <groovy>
                                    println "Hello from pom.xml!"
                                </groovy>
                                <groovy src="task.groovy" />
                            </target>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>org.apache.groovy</groupId>
            <artifactId>groovy</artifactId>
            <version>4.0.6</version>
        </dependency>
        <dependency>
            <groupId>org.apache.groovy</groupId>
            <artifactId>groovy-ant</artifactId>
            <version>4.0.6</version>
        </dependency>
        <dependency>
            <groupId>org.apache.ant</groupId>
            <artifactId>ant</artifactId>
            <version>1.10.12</version>
        </dependency>
    </dependencies>
</project>

task.groovy

代码语言:javascript
复制
println "Hello from task.groovy!"

我的期望:

代码语言:javascript
复制
[...]
[INFO] --- maven-antrun-plugin:1.8:run (default) @ test ---
[INFO] Executing tasks

main:
     [echo] compile classpath: C:\tmp\groovy-ant-test\target\classes;M:\org\apache\groovy\groovy\4.0.6\groovy-4.0.6.jar;M:\org\apache\groovy\groovy-ant\4.0.6\groovy-ant-4.0.6.jar;M:\org\apache\ant\ant-junit\1.10.12\ant-junit-1.10.12.jar;M:\org\apache\ant\ant-launcher\1.10.12\ant-launcher-1.10.12.jar;M:\org\apache\ant\ant-antlr\1.10.12\ant-antlr-1.10.12.jar;M:\org\apache\groovy\groovy-groovydoc\4.0.6\groovy-groovydoc-4.0.6.jar;M:\org\apache\ant\ant\1.10.12\ant-1.10.12.jar;C:\Program Files\OpenJDK\8.322.06.1\lib\tools.jar
Hello from pom.xml!
Hello from task.groovy!

[...]

我的结果:

代码语言:javascript
复制
[INFO] --- maven-antrun-plugin:1.8:run (default) @ test ---
[INFO] Executing tasks

main:
     [echo] compile classpath: C:\tmp\groovy-ant-test\target\classes;M:\org\apache\groovy\groovy\4.0.6\groovy-4.0.6.jar;M:\org\apache\groovy\groovy-ant\4.0.6\groovy-ant-4.0.6.jar;M:\org\apache\ant\ant-junit\1.10.12\ant-junit-1.10.12.jar;M:\org\apache\ant\ant-launcher\1.10.12\ant-launcher-1.10.12.jar;M:\org\apache\ant\ant-antlr\1.10.12\ant-antlr-1.10.12.jar;M:\org\apache\groovy\groovy-groovydoc\4.0.6\groovy-groovydoc-4.0.6.jar;M:\org\apache\ant\ant\1.10.12\ant-1.10.12.jar;C:\Program Files\OpenJDK\8.322.06.1\lib\tools.jar
Hello from pom.xml!
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  2.425 s
[INFO] Finished at: 2022-10-24T13:49:36+02:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.8:run (default) on project test: An Ant BuildException has occured: java.lang.NoSuchMethodError: org.apache.tools.ant.filters.util.ChainReaderHelper.<init>(Lorg/apache/tools/ant/Project;Ljava/io/Reader;Ljava/lang/Iterable;)V
[ERROR] around Ant part ...<groovy src="task.groovy"/>... @ 10:30 in C:\tmp\groovy-ant-test\target\antrun\build-main.xml

来自-X选项的附加堆栈跟踪部件:

代码语言:javascript
复制
Caused by: java.lang.NoSuchMethodError: org.apache.tools.ant.filters.util.ChainReaderHelper.<init>(Lorg/apache/tools/ant/Project;Ljava/io/Reader;Ljava/lang/Iterable;)V
    at org.codehaus.groovy.ant.Groovy.readCommandFromReader (Groovy.java:432)

maven类路径包含groovy:4.0.6,它依赖于我显式提供的ant:1.10.12。ant中的org.apache.tools.ant.filters.util.ChainReaderHelper :1.10.12有一个带有请求的args的构造函数。

我不认为在类路径上出现错误版本的可能性,就像依赖关系:tree显示的那样

代码语言:javascript
复制
[INFO] test:test:jar:0.0.1-SNAPSHOT
[INFO] +- org.apache.groovy:groovy:jar:4.0.6:compile
[INFO] +- org.apache.groovy:groovy-ant:jar:4.0.6:compile
[INFO] |  +- org.apache.ant:ant-junit:jar:1.10.12:compile
[INFO] |  +- org.apache.ant:ant-launcher:jar:1.10.12:compile
[INFO] |  +- org.apache.ant:ant-antlr:jar:1.10.12:compile
[INFO] |  \- org.apache.groovy:groovy-groovydoc:jar:4.0.6:compile
[INFO] \- org.apache.ant:ant:jar:1.10.12:compile
[INFO]    \- com.sun:tools:jar:1.8.0:system

是否有任何失败的原因,我没有看到,或我是否错配置了什么?

EN

回答 1

Stack Overflow用户

发布于 2022-10-24 13:42:48

在对antrun插件进行了一些调试之后,我发现maven-antrun-plugin本身提供了错误的ant版本(本例中为1.9.4)。

变到

代码语言:javascript
复制
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>3.1.0</version>

导致期望的输出。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74180809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档