我有一个build.gradle
加载PMD的文件(从上游Maven下载),然后加载需要PMD的Ant build.xml文件:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'pmd:pmd:4.2.5'
}
}
ant.importBuild 'shared-build.xml'
Run Code Online (Sandbox Code Playgroud)
但是,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)
Run Code Online (Sandbox Code Playgroud)
如何指示Gradle的蚂蚁整合使其可用?
小智 6
没有直接的方法可以做到这一点,因为Gradle没有为此提供任何API支持.所以你需要以某种方式破解它.
例如,您可以在调用ant.importBuild之前执行此类操作
org.apache.tools.ant.Project.class.classLoader.addURL( file('libs/somelib.jar').toURI().toURL() )
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用通过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())
}
Run Code Online (Sandbox Code Playgroud)
当然,另一种解决方案是在build.xml文件中定义类路径,这样您就不必从Gradle执行任何操作.
请参阅此处的一些输入http://gradle.1045684.n5.nabble.com/How-to-add-to-classpath-for-ant-importBuild-td3268631.html
归档时间: |
|
查看次数: |
4733 次 |
最近记录: |