簡體   English   中英

從Gradle使用ANTBuilder時ant插件的類路徑

[英]Classpath for ant plugins when using ANTBuilder from Gradle

我有一個build.gradle文件,它加載PMD (從上游Maven下載),然后加載一個需要PMD的Ant build.xml文件:

buildscript {
  repositories {
    mavenCentral()
  }
  dependencies {
    classpath 'pmd:pmd:4.2.5'
  }
}
ant.importBuild 'shared-build.xml'

但是,Ant導入失敗:

taskdef class net.sourceforge.pmd.ant.PMDTask cannot be found
using the classloader AntClassLoader[]
  at org.apache.tools.ant.ProjectHelper.addLocationToBuildException(ProjectHelper.java:551)
[...]
  at org.gradle.api.internal.project.DefaultAntBuilder.importBuild(DefaultAntBuilder.groovy:76)

如何指示Gradle的螞蟻整合使其可用?

沒有直接的方法可以做到這一點,因為Gradle沒有為此提供任何API支持。 所以你需要以某種方式破解它。

例如,您可以在調用ant.importBuild之前執行此類操作

org.apache.tools.ant.Project.class.classLoader.addURL( file('libs/somelib.jar').toURI().toURL() )

或者,您可以使用通過Gradle的依賴項解析獲得的路徑調用addURL()方法(同樣,這應該在調用ant.importBuild之前執行)。

configurations { someconf }
dependencies { someconf "org.eclipse.jdt:ecj:3.6.1" }

def antClassLoader = org.apache.tools.ant.Project.class.classLoader
configurations.someconf.each { File f ->
    antClassLoader.addURL(f.toURI().toURL())
}

當然,另一種解決方案是在build.xml文件中定義類路徑,這樣您就不必從Gradle執行任何操作。

請參閱此處的一些輸入http://gradle.1045684.n5.nabble.com/How-to-add-to-classpath-for-ant-importBuild-td3268631.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM