相关疑难解决方法(0)

如何在jar资源中扩展属性引用?

我正在使用Gradle构建一个包含xml文件的jar META-INF.这个文件有一行像

<property name="databasePlatform" value="${sqlDialect}" />
Run Code Online (Sandbox Code Playgroud)

允许不同的SQL数据库用于不同的环境.我想告诉gradle ${sqlDialect}从项目属性扩展.

我试过这个:

jar {
    expand project.properties
}
Run Code Online (Sandbox Code Playgroud)

但它GroovyRuntimeException似乎失败了,就像Jar任务试图扩展.class文件中的属性一样.所以我试过了

jar {
    from(sourceSets.main.resources) {
        expand project.properties
    }
}
Run Code Online (Sandbox Code Playgroud)

它不会引发上述异常,而是导致所有资源被复制两次 - 一次是属性扩展而一次是没有.我设法解决这个问题

jar {
    eachFile {
        if(it.relativePath.segments[0] in ['META-INF']) {
            expand project.properties
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这就是我想要的,因为在我的用例中我只需要扩展META-INF目录中文件的属性.但这感觉就像一个非常丑陋的黑客,有没有更好的方法来做到这一点?

gradle

8
推荐指数
2
解决办法
1万
查看次数

标签 统计

gradle ×1