我正在寻找一种从 antbuild.xml
文件中提取属性的可能简洁明了的方法。
我知道我可以使用ant.importBuild 'build.xml'
,但这会导入所有目标,可能会导致名称冲突,例如与 java 插件发生冲突,这是一个已知问题。
我正在使用 gradle 1.6。
一种方法是手动解析 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 都可以读取的外部属性文件。