使用groovy-maven-plugin时,Groovy不会将闭包转换为BiPredicate

时间:2018-09-22 08:43:39

标签: java maven groovy java-8

我在遵循以下常规代码时遇到了麻烦(我首先尝试了没有显式的闭包参数类型):

  Files.find(path, 4, { Path target, BasicFileAttributes attr ->
    def file = target.fileName
    file.toString().endsWith(".xml") && !file.toString().startsWith("_")
  },
    new FileVisitOption[0]
  ).collect(Collectors.toList())

Groovy编译器(2.4.15)失败,并显示:

No signature of method: static java.nio.file.Files.find() is applicable for argument types: (sun.nio.fs.UnixPath, java.lang.Integer, upgrade_bundles$_items_closure3, [Ljava.nio.file.FileVisitOption;) values: [/home/kkrason/dev/tpc2/zerocracy/farm/src/test/resources/com/zerocracy/bundles/understands_bug_label, ...]
Possible solutions: find(), find(java.nio.file.Path, int, java.util.function.BiPredicate, [Ljava.nio.file.FileVisitOption;), findAll(), any(), find(groovy.lang.Closure), wait()

为什么编译器没有将闭包转换为BiPredicatefind方法只有一种,所以我不明白为什么会发生冲突。

编辑:上面的代码使用maven执行:

                    org.codehaus.gmaven         groovy-maven-plugin         2.1                                 升级捆绑             流程测试资源                            执行                                         编译               $ {project.basedir} /upgrade_bundles.groovy                                                

在项目依赖项中,我有:

<dependency>
  <groupId>org.codehaus.groovy</groupId>
  <artifactId>groovy-all</artifactId>
  <version>2.4.15</version>
</dependency>

我试图将此依赖项添加到groovy-maven-plugin中,但随后得到:

[ERROR] Failed to execute goal org.codehaus.gmaven:groovy-maven-plugin:2.1:execute (upgrade-bundles) on project farm: Execution upgrade-bundles of goal org.codehaus.gmaven:groovy-maven-plugin:2.1:execute failed: A required class was missing while executing org.codehaus.gmaven:groovy-maven-plugin:2.1:execute: net/sf/saxon/event/Receiver
[ERROR] -----------------------------------------------------
[ERROR] realm =    plugin>org.codehaus.gmaven:groovy-maven-plugin:2.1
[ERROR] strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
[ERROR] urls[0] = file:/home/kkrason/.m2/repository/org/codehaus/gmaven/groovy-maven-plugin/2.1/groovy-maven-plugin-2.1.jar
[ERROR] urls[1] = file:/home/kkrason/.m2/repository/org/codehaus/groovy/groovy-all/2.4.15/groovy-all-2.4.15.jar
[ERROR] urls[2] = file:/home/kkrason/.m2/repository/org/sonatype/gossip/gossip-slf4j/1.8/gossip-slf4j-1.8.jar
[ERROR] urls[3] = file:/home/kkrason/.m2/repository/org/sonatype/gossip/gossip-core/1.8/gossip-core-1.8.jar
[ERROR] urls[4] = file:/home/kkrason/.m2/repository/org/sonatype/gossip/gossip-bootstrap/1.8/gossip-bootstrap-1.8.jar
[ERROR] urls[5] = file:/home/kkrason/.m2/repository/com/google/guava/guava/14.0.1/guava-14.0.1.jar
[ERROR] urls[6] = file:/home/kkrason/.m2/repository/com/google/code/findbugs/jsr305/2.0.1/jsr305-2.0.1.jar
[ERROR] urls[7] = file:/home/kkrason/.m2/repository/org/codehaus/plexus/plexus-interpolation/1.16/plexus-interpolation-1.16.jar
[ERROR] urls[8] = file:/home/kkrason/.m2/repository/org/eclipse/aether/aether-util/0.9.0.M2/aether-util-0.9.0.M2.jar
[ERROR] urls[9] = file:/home/kkrason/.m2/repository/org/codehaus/gmaven/gmaven-adapter-api/2.1/gmaven-adapter-api-2.1.jar
[ERROR] urls[10] = file:/home/kkrason/.m2/repository/org/codehaus/gmaven/gmaven-adapter-impl/2.1/gmaven-adapter-impl-2.1.jar
[ERROR] urls[11] = file:/home/kkrason/.m2/repository/org/apache/ant/ant/1.8.4/ant-1.8.4.jar
[ERROR] urls[12] = file:/home/kkrason/.m2/repository/org/apache/ant/ant-launcher/1.8.4/ant-launcher-1.8.4.jar
[ERROR] urls[13] = file:/home/kkrason/.m2/repository/jline/jline/1.0/jline-1.0.jar
[ERROR] urls[14] = file:/home/kkrason/.m2/repository/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar
[ERROR] Number of foreign imports: 1
[ERROR] import: Entry[import  from realm ClassRealm[project>com.zerocracy:farm:0.30.7, parent: ClassRealm[maven.api, parent: null]]]

0 个答案:

没有答案