【发布时间】:2015-09-08 03:15:50
【问题描述】:
就像在 Maven 中一样,我们可以定义一个全球公司 POM,它可以用于所有项目。
这在 Gradle 中是如何工作的?
我想定义一个可用于所有即将进行的项目的全局父级,但我不知道如何使用 Gradle 完成此操作。我正在阅读文档,但那只是在谈论项目/父样式,而不是全局样式。
【问题讨论】:
就像在 Maven 中一样,我们可以定义一个全球公司 POM,它可以用于所有项目。
这在 Gradle 中是如何工作的?
我想定义一个可用于所有即将进行的项目的全局父级,但我不知道如何使用 Gradle 完成此操作。我正在阅读文档,但那只是在谈论项目/父样式,而不是全局样式。
【问题讨论】:
您通常不会让您的项目“继承”来自一个共同的父项,而是将共同的登录信息封装为 Gradle plugin 并将该插件应用于您的所有项目。
【讨论】:
这个问题与已经回答的问题gradle parent pom like feature 非常相似。我想指出从那时起 Gradle 发生了什么变化。
Gradle 没有与 Maven 父 POM 构造直接可比的概念。确实可以使用自定义 Gradle 插件将公司默认值应用于 Gradle 构建的项目。我找到了一个很好的 Blog Post 详细描述了这一点。
但 Gradle 不止于此。 Gradle 有Initialization Scripts,用于在公司内的项目之间共享构建逻辑。下面的脚本,例如 manifest_defaults.gradle,可用于将默认的 MANIFEST 条目添加到基于 Java 的项目构建生成的 jar 文件中:
allprojects {
afterEvaluate { project ->
if (project.plugins.hasPlugin('java')) {
project.jar {
manifest {
attributes {
"Implementation-Title": project.archivesBaseName,
"Implementation-Vendor": "My Company"
}
}
}
}
}
}
企业中的初始化脚本最好与自定义的company Gradle distributions 结合使用。将此与Gradle Wrapper 结合使用是一项强大的功能。
【讨论】: