Ant能否启动Gradle任务?

3

我正在研究替代Ant的工具。我已经看过了GantGradle

在Ant中是否可以启动Gradle任务?这在Gant中是可能的,使用taskdef命令。

<taskdef
    name         = "gant"
    classname    = "org.codehaus.gant.ant.Gant"
    classpathref = "classpath" 
    />

<gant />

有类似Gradle的东西吗?我渴望开始从Ant迁移到Gradle,但我们有一个庞大的Ant基础设施,因此我创建的任何Gradle构建脚本都需要能够从Ant中调用。

谢谢!

4个回答

8

创建一个用于gradle的宏定义,与其他任务一样进行调用。以下是设置和示例:

    <!-- Gradle path stuff -->
<property environment="env" />
<condition property="gradle.executable" value="${env.GRADLE_HOME}/bin/gradle.bat" else="${env.GRADLE_HOME}/bin/gradle">
    <os family="windows" />
</condition>

<!-- Macro def, gives us an ant 'gradle' task-->
<macrodef name="gradle">
    <attribute name="task" />
    <sequential>
        <exec executable="${gradle.executable}" dir="." failonerror="true">
            <arg value="@{task}" />
        </exec>
    </sequential>
</macrodef>

使用宏定义的示例

<!-- Example, call grade with new macro -->
<target name="example">
    <gradle task="build" />
</target>

有没有一种方法可以将Ant接收到的所有命令行属性传递给Gradle宏定义? - Srikanth Babu K
通过命令行传递项目属性(使用 -P<propname> = propvalue)。我正在寻找一种收集所有命令行项目属性的方法,同时调用 ant,并将它们传递给通过 macrodef 发生的 gradle 调用。 - Srikanth Babu K

3
不要更换构建技术,为什么不使用 ivygroovy 的组合来扩展现有 ant 构建的功能呢?
以下是一个示例: 使用 Ant 脚本解析 HTML 顺便说一句,我很喜欢 Gradle,但是像你一样,我必须与支持大量 ANT 遗留代码。

1
+1... 有太多人需要共同生活并支持大量的ANT遗留问题。通过脚本扩展提供了一种中间路径。 - Jayan

3

实际上,我想做同样的事情,通过调用一个 sh 文件来实现,并且这个 sh 文件再调用 gradle,但是这太麻烦了,最终下面的代码使其工作得很好。

希望这能帮到你。

<property environment="env" />
<property name="gradle.wrapper.executable" location="${env.GRADLE_HOME}/bin/gradle" />
<target name="dependencies-report" description="Creates a text file report of the depdency tree">
<exec executable="${gradle.wrapper.executable}" dir=".">
    <arg value="dependencyReport" />
</exec>
</target>

1

Gradle没有提供Ant任务以从Ant运行Gradle构建。您可以从Ant调用Gradle命令(如gradle build)。

在Ant集成方面,Gradle提供两个功能:导入Ant构建和重复使用Ant任务。

Gradle与Gant非常不同。Gradle是全新的构建系统;而Gant则是在Ant之上的薄层。


很遗憾,但感谢你提供的信息。Gant会很完美,但它不允许动态任务/目标的创建(gantfile格式排除了它)。所以我转向Gradle,它比我需要的功能还要多,但支持动态任务,但无法从Ant中调用。唉。 :) - mwcz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接