0

我正在寻找一种从 antbuild.xml文件中提取属性的可能简洁明了的方法。

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

我正在使用 gradle 1.6。

4

1 回答 1

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 都可以读取的外部属性文件。

于 2013-05-22T23:34:02.533 回答