在配置阶段无法使用 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的ProjectHelper和Project类。 所以我想这就是我的答案。

#1楼 票数: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>');
}

  ask by vehovmar translate from so

未解决问题?本站智能推荐:

1回复

尝试在文件中扩展属性在我的gradle构建中匹配

我有以下gradle构建 ./build.gradle 我想用../versions.properties中为所有* .xml,*。ini和* .yml文件中的变量定义的值替换所有“ $ {variableName}”,然后将所有文件复制到新文件夹中。 例如:../versions.
1回复

在评估阶段使用Gradle插件配置属性

我正在编写自己的gradle插件,并想定义一个附加的Copy任务。 我要做的是: 不幸的是,文件仍然是从“脚本”文件夹而不是“ otherDir”复制的。 似乎扩展属性未在评估阶段设置。 您有任何想法如何在“复制”任务中引用myPlugin设置吗? 谢谢!
2回复

GradleCopy任务:Ant到Gradle的迁移

我是gradle的新手,并且将ant build.xml脚本迁移到了gradle。 通常,复制任务非常简单直接,但是我遇到了这个有点复杂的复制任务(可能也很简单),它具有冗长的启用和文件集。 我能知道如何将这个蚂蚁代码转换为gradle任务吗? 到目前为止我尝试写的Gradle任务是
2回复

如何在build.gradle中执行Ant目标任务?

如何从build.gradle文件中获取与Ant目标关联的任务以执行? build.gradle用于导入build.xm l文件的部分: 我要执行的ant目标名为compile-android 。 它可以通过以下命令在命令行成功运行: 但我想在build.gradle包括它,以便我
1回复

在gradle脚本中使用来自salesforce-ant.jar的Ant任务

我在build.xml中有以下任务定义 我想在gradle脚本中导入它。 我在build.gradle中使用了以下任务定义 但是在gradle脚本中找不到此任务。 有人知道如何在gradle任务中导入Ant taskDef吗?
2回复

从antbuild.xml文件构建gradle任务时并发修改异常

在具有多个子项目的多模块项目中尝试从ant构建文件导入运行任务时,遇到了并发修改异常。 异常只说了几句*出了什么问题:java.util.ConcurrentModificationException(无错误消息) 我在其他子项目中有相同的build.gradle文件,但我能够从grad
1回复

使用ant将电子邮件发送到gradle中的许多地址

我想使用Gradle中的Ant将电子邮件发送到许多地址,但是我不知道该怎么做,我实现了gradle脚本将电子邮件发送到单个地址 此实现可以很好地发送到单个地址,如何发送到多个地址?
3回复

构建scala代码时发生Gradle错误

构建scala代码时,我遇到了gradle的一个问题。 $ gradle makeJar 错误:org.gradle.api.tasks.TaskExecutionException: 任务':compileScala'的执行失败。 由引起的:java.lang.NoClassD