是否可以从Ant启动Gradle任务?

时间:2012-03-07 21:20:20

标签: ant build-automation gradle

我正在研究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 个答案:

答案 0 :(得分:5)

为gradle创建一个macrodef,就像任何其他任务一样调用它。这是设置和示例......

    <!-- 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>

使用宏def

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

答案 1 :(得分:2)

Gradle不提供Ant任务来从Ant运行Gradle构建。你可以做的是从Ant调用Gradle命令(如gradle build)。

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

Gradle与Gant非常不同。 Gradle是一个全新的构建系统; Gant是Ant上方的一层薄层。

答案 2 :(得分:2)

为什么不使用ivygroovy的组合来扩展现有ant构建的功能,而不是切换构建技术?

以下帖子就是一个例子:

Parse HTML using with an Ant Script

BTW我是Gradle的忠实粉丝,然而,和你一样,我必须忍受并支持大量的ANT遗产: - )

答案 3 :(得分:2)

实际上我想做同样的事情,并通过调用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>