作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有多个 java 项目。这些项目正在使用 gradle 创建 jar、war 和 ear 文件。在每个项目中,我都使用 list 文件来维护元数据,如版本、日期时间……为此,我在每个 build.gradle 文件中包含了 list 文件创建逻辑。
manifest {
attributes(
'Bundle-Vendor' : "$BUNDLE_VENDOR",
'Build-Time': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"))
}
但是在 Gradle 中有一个功能调用 sharedManifest。我在主项目 build.gradle 脚本中定义了以下两个任务。但是在每个 jar 和 war 文件中都有 Gradle 创建的默认 MANIFEST.MF 文件。
ext.sharedManifest = manifest {
attributes(
'Bundle-Vendor' : "$BUNDLE_VENDOR",
'Build-Time': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ")
)
}
task fooJar(type: Jar) {
manifest = project.manifest {
from sharedManifest
}
}
task fooWar(type: War) {
manifest = project.manifest {
from sharedManifest
}
}
jar.manifest.writeTo("/MANIFEST.MF")war.manifest.writeTo("/MANIFEST.MF")
请有人能给出如何做到这一点的建议。
最佳答案
在构建中共享 list 逻辑的最简单方法是配置规则,例如:
allprojects {
tasks.withType(Jar) { // includes War and Ear
manifest {
attributes ...
}
}
}
关于java - 如何为多个项目创建 Gradle sharedManifest?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25116854/
我是一名优秀的程序员,十分优秀!