我正在使用 Gradle 构建一个包含 .xml 文件的 jar META-INF
。这个文件有一行像
<property name="databasePlatform" value="${sqlDialect}" />
允许针对不同环境使用不同的 SQL 数据库。我想告诉 gradle${sqlDialect}
从项目属性中扩展。
我试过这个:
jar {
expand project.properties
}
但它失败了GroovyRuntimeException
,在我看来,就像 Jar 任务试图扩展.class
文件中的属性一样。所以我尝试了
jar {
from(sourceSets.main.resources) {
expand project.properties
}
}
这不会引发上述异常,而是会导致所有资源被复制两次——一次有属性扩展,一次没有。我设法解决了这个问题
jar {
eachFile {
if(it.relativePath.segments[0] in ['META-INF']) {
expand project.properties
}
}
}
这是我想要的,因为在我的用例中,我只需要扩展META-INF
目录中文件的属性。但这感觉就像一个非常丑陋的黑客,有没有更好的方法来做到这一点?