2

我正在将我们的构建从 Ant 转换为 Gradle。我们的第一步是添加 Gradle 构建文件,以便我们可以开始使用 Gradle 作为我们的构建工具。这让我们可以使用现有的构建脚本来使用 Ant 进行构建,并随着时间的推移将它们转换为 Gradle。我只想让 Gradle 调用现有的 Ant 构建文件。我们的项目都是 NetBeans 项目,有 build.xml 和 nbproject/build-impl.xml 文件。一些项目需要 NetBeans 构建属性,可在 ~/.netbeans/6.5.1/build.properties 中找到。我已成功将 NetBeans user.properties.file 属性设置为 ~/.netbeans/6.5.1/build.properties。

当我使用 Ant 构建时,我会调用它:

ant -Duser.properties.file=~/.netbeans/6.5.1/build.properties dist

这将执行 dist 目标,该目标取决于 init 目标,该目标取决于下面列出的目标:

pre-init, init-private, init-userdir, init-user, init-project, do-init, post-init, init-check, -init-taskdefs

上面列出的目标按指定的顺序执行。当我调用 'gradle dist' 时,它会调用 init Ant 目标,但随后它会以相反的顺序执行上面列出的目标,从 -init-taskdefs 开始。在 -init-taskdefs 目标之前的目标中设置了一些必需的属性,这些属性在从 gradle 运行时不会被设置。

真的,我现在想做的就是使用 gradle 调用 Ant 来构建我的项目。由于使用 gradle 构建使用 Ant build.xml 文件似乎没有按预期工作,因此最好的方法是什么?我必须求助于使用 exec 吗?(我希望不是)。

4

1 回答 1

0

我发现尝试使用 Gradle 的 Ant 与 Netbeans 项目的集成太困难且容易出错。相反,我使用 Gradle 的 exec() 命令。下面是一个示例,取自我构建名为“Common Library”的 NetBeans 项目的代码。

task commonLibrary {
    doLast {
        ant.echo("Building Common Library")
        exec () {
            workingDir = "../netbeans/nb/CommonLibrary"
            executable = "ant"
            args = ['clean', 'jar']
        }
    }
}

我意识到这不是您希望的答案,但将其发布为其他人的可能解决方案,特别是那些无法开始重新处理 build.xml 文件的人。

于 2018-03-27T20:59:35.043 回答