Gradle ant构建文件在配置阶段

时间:2015-12-26 13:01:02

标签: groovy gradle ant build.gradle

如果在配置阶段期间没有ant build.xml文件,我无法弄清楚如何执行ant目标。因为它是一个远程资源(Maven远程资源插件)。

所以基本上首先我需要得到这样的远程资源:

configurations {
    remoteResources
}

dependencies.remoteResources 'group:my-remote-resource:version'

task getRemoteResources(type: Copy) {
    from(zipTree(configurations.remoteResources.first()))
    into("$buildDir/remote-resources")

    // replace placeholders
    filter(org.apache.tools.ant.filters.ReplaceTokens, , tokens: remotePlaceholders)
}

只有这时我才有

中的build.xml
"$buildDir/remote-resources"

但我无法使用 ant.importBuild ,因为在配置期间我们需要build.xml,这不是我的情况。

我正在考虑移动远程资源"下载"进入初始化阶段,但我有一个多模块项目,虽然只有一些子项目正在使用这个远程资源,但它们都有自己的占位符来替换。

在这种特殊情况下,有没有办法执行ant目标?

编辑:我发现使用Ant的ProjectHelper和Project类非常好solution。所以我猜这是我的答案..

1 个答案:

答案 0 :(得分:0)

所以这是最终的解决方案。 (已经提到的信用转到groovy-almanac

import org.apache.tools.ant.Project;
import org.apache.tools.ant.ProjectHelper;

task executeAntTarget(dependsOn: getRemoteResources) << {
    def antFile = new File("$buildDir/remote-resources/build.xml")
    def antProject = new Project()
    antProject.init()
    ProjectHelper.projectHelper.parse(antProject, antFile)

    antProject.executeTarget('<target-to-execute>');
}