【发布时间】:2013-03-06 02:54:54
【问题描述】:
我正在将我们的构建从 Ant 转换为 Gradle。我们的第一步是添加 Gradle 构建文件,以便我们可以开始使用 Gradle 作为我们的构建工具。这让我们可以使用现有的构建脚本来使用 Ant 进行构建,并随着时间的推移将它们转换为 Gradle。我只想让 Gradle 调用现有的 Ant 构建文件。我们的项目都是 NetBeans 项目,有 build.xml 和 nbproject/build-impl.xml 文件。一些项目需要 NetBeans 构建属性,可在 ~/.netbeans/6.5.1/build.properties 中找到。我目前有 build.gradle,其中仅包含以下内容:
ant.importBuild 'build.xml'
我可以像这样使用 Ant 构建项目:
ant -Duser.properties.file=/home/me/.netbeans/6.5.1/build.properties dist
但是,当我使用 Gradle 构建时,Ant 抱怨它找不到 build.properties 中设置的属性。我已经尝试设置 Ant 属性,但似乎没有被拾取:
ant.properties['user.properties.file'] = '/home/me/.netbeans/6.5/build.properties'
我也尝试过设置系统属性:
systemProperties 'user.properties.file': '/home/me/.netbeans/6.5/build.properties'
但这也不起作用。理想情况下,我想在 ~/.gradle/gradle.properties 中设置这个属性,因为我们几乎所有的项目都需要它。
如何在 Gradle 中设置此属性并让 Ant 在从 Gradle 调用时拾取它?
【问题讨论】:
-
您是否尝试将
ant.properties放在ant.importBuild之前? -
谢谢!...在项目的 build.gradle 文件中工作。但是,我在 ~/.gradle/gradle.properties 和顶级 build.gradle 文件中设置了属性。为什么这些不被捡起来?我几乎在所有项目中都需要设置这个属性,所以我想设置一次,特别是因为这是用户特定的。
-
我不太明白你在说什么,但
ant.properties是每个项目 的。当然你可以做类似allprojects { ant.properties[...] = ... }的事情。 -
如果 ant.properties 是每个项目的,这可以解释为什么它不起作用。我的意思是我有一个包含多个项目的存储库,所有这些项目都是 Ant 项目。几乎所有这些都需要设置 Ant user.properties.file 属性。我想在一个地方设置这个 Ant 属性,比如在 gradle.properties 文件或 repo 顶部的 build.gradle 文件中。如果我采取在 ant.importBuild 之前添加 ant.properties 的方法,我将不得不将该属性添加到所有 build.gradle 文件中。 (续)...
-
正如我所说,您可以在顶级
build.gradle文件中执行allprojects { ... }。properties.gradle不合适,因为它设置 Gradle(项目)属性,而不是 Ant 属性。您还应该考虑一种方法来避免每个开发人员都需要自定义构建脚本。例如,您可以使用System.getProperty("user.name")获取(OS)用户名。