在我的工作中,我们使用 Maven。我将第一次尝试 gradle。我们为所有项目使用一个共同的父 pom,它具有常用 maven 插件的设置和一些常见的依赖项。gradle中是否有类似的选项?
我的第二个问题是关于发布管理的。我们使用 maven 发布插件,这对我们来说非常有用。Gradle中有类似的东西吗?
在我的工作中,我们使用 Maven。我将第一次尝试 gradle。我们为所有项目使用一个共同的父 pom,它具有常用 maven 插件的设置和一些常见的依赖项。gradle中是否有类似的选项?
我的第二个问题是关于发布管理的。我们使用 maven 发布插件,这对我们来说非常有用。Gradle中有类似的东西吗?
要在同一构建的多个项目中共享内容,请使用allprojects { ... }
,subprojects { ... }
等。此外,在父项目中声明的额外属性 ( ext.foo = ...
) 在子项目中是可见的。ext.libs = [junit: "junit:junit:4.11", spring: "org.springframework:spring-core:3.1.0.RELEASE", ...]
一个常见的习惯用法是在顶层构建脚本中有类似的东西。然后子项目可以通过它们的短名称选择性地包含依赖项。您应该能够在Gradle 论坛中找到更多相关信息。
要在构建之间共享逻辑,您可以编写脚本插件 ( ) foo.gradle
,将其放在 Web 服务器上,并将其包含在构建中, 并将其包含在带有和部分的构建中。有关详细信息,请参阅Gradle 用户指南和完整 Gradle 发行版中的许多示例。apply from: "http://..."
org.gradle.api.Plugin
apply plugin: ...
buildscript {}
脚本(但不是二进制)插件的当前限制是它们没有被缓存。因此,只有在可以连接到为插件提供服务的 Web 服务器时,构建才会成功。
至于你的第二个问题(这应该是一个单独的问题),有几个第三方发布插件可用,例如https://github.com/townsfolk/gradle-release。
io.spring.dependency -management插件允许您使用 Maven bom 来控制构建的依赖项:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath "io.spring.gradle:dependency-management-plugin:0.5.3.RELEASE"
}
}
apply plugin: "io.spring.dependency-management"
接下来,您可以使用它来导入一个 Maven bom:
dependencyManagement {
imports {
mavenBom 'io.spring.platform:platform-bom:1.1.1.RELEASE'
}
}
现在,您可以在不指定版本号的情况下导入依赖项:
dependencies {
compile 'org.springframework:spring-core'
}
我认为做 maven parent pom 之类的最好方法是使用 gradle "apply from"。
是这样的:</p>
allprojects { // or: subprojects { ... }
apply from: "gradle/script/common.gradle"
}
链接是相关路径或 URL。希望能帮助到你。
我也想要这种类型的功能,我在这里创建了一个插件来提供这个:https ://github.com/boxheed/gradle-pater-build-plugin
您可以非常轻松地将 Parent pom 内容转换为 Gradle init 文件。Gradle 初始化脚本提供与 Maven 超级/父 pom 相同的功能。基本的区别是你可以调用init脚本
运行时 与它们一样多 这使我们可以灵活地
在运行时更改 init 脚本,但怀疑不跟踪更改。
您需要将存储库、分发管理、分析和其他检查(如 findbugs、checkstyle 等)放入 init 脚本。
细节很大,您可以在我这里找到完整的信息。 http://www.scmtechblog.net/2015/12/how-to-migrate-parent-pom-from-maven-to.html
我已经解释了类似于 maven 发布插件的 gradle 发布插件。
如果您希望将父级缓存在本地并存储在 Maven 存储库中,目前这是不可能的。
我在这里添加了功能请求: http ://forums.gradle.org/gradle/topics/support_for_gradle_parent_shared_between_projects_cached_locally
为了实现您的目标,您可以应用此处的 Gradel 用户指南中解释的“多项目构建”概念
基本上,您可以通过创建 gradle.build 文件和 gradle.settings 文件来创建定义一组通用配置的伞式项目。构建文件包含所有项目的公共属性、依赖项和插件,settings.gradle 定义了哪些子项目继承了这些配置。
此外,要了解 gradle 插件生态系统,您可以查看此来源。