渐变ant构建文件在配置阶段不可用



如果antbuild.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的ProjectHelper和Project类的解决方案非常不错。所以我想这就是我的答案。。

所以这里是最终解决方案。(如前所述,学分进入groovy年鉴)

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>');
}

相关内容

  • 没有找到相关文章

最新更新