如何从ant构建文件中读取属性到gradle构建脚本?

时间:2013-05-22 23:15:36

标签: ant gradle

我正在寻找一种从ant的build.xml文件中提取属性的简洁方法。

我知道我可以使用ant.importBuild 'build.xml',但这会导入所有目标,可能导致名称冲突,例如使用java插件,这是一个known issue

我正在使用gradle 1.6。

1 个答案:

答案 0 :(得分:1)

一种方法是手动解析XML文件,例如使用Groovy的XmlSlurper类。但是,这不会替换属性值中出现的任何属性引用。另一种方法是配置org.apache.tools.ant.Project对象(类似于ant.importBuild的方式),并从那里获取属性值。类似的东西:

import org.apache.tools.ant.Project
import org.apache.tools.ant.ProjectHelper

task printPropertyValue {
    doLast {
        def antProject = new Project()
        ProjectHelper.configureProject(antProject, file("build.xml"))
        def value = antProject.getProperty("some.property")
        while (value.contains('${')) {
            value = antProject.replaceProperties(value)
        }
        println value

    }
}

可能有一种更好的方法来递归替换属性引用,但我找不到一个。

另一个可能的解决方案是使用Ant和Gradle同时读取的外部属性文件。