46

在我的工作中,我们使用 Maven。我将第一次尝试 gradle。我们为所有项目使用一个共同的父 pom,它具有常用 maven 插件的设置和一些常见的依赖项。gradle中是否有类似的选项?

我的第二个问题是关于发布管理的。我们使用 maven 发布插件,这对我们来说非常有用。Gradle中有类似的东西吗?

4

7 回答 7

32

要在同一构建的多个项目中共享内容,请使用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.Pluginapply plugin: ...buildscript {}

脚本(但不是二进制)插件的当前限制是它们没有被缓存。因此,只有在可以连接到为插件提供服务的 Web 服务器时,构建才会成功。

至于你的第二个问题(这应该是一个单独的问题),有几个第三方发布插件可用,例如https://github.com/townsfolk/gradle-release

于 2013-03-18T08:23:32.743 回答
14

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'
}
于 2015-11-04T22:23:31.107 回答
2

我认为做 maven parent pom 之类的最好方法是使用 gradle "apply from"。
是这样的:</p>

allprojects { // or: subprojects { ... }
    apply from: "gradle/script/common.gradle"
}

链接是相关路径或 URL。希望能帮助到你。

参考:
从根目录导入一个Gradle脚本到子项目
Super POM,Gradle中层次管理的Parent POM类型

于 2015-05-28T06:41:15.773 回答
1

我也想要这种类型的功能,我在这里创建了一个插件来提供这个:https ://github.com/boxheed/gradle-pater-build-plugin

于 2015-02-09T21:59:15.923 回答
1

您可以非常轻松地将 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 发布插件。

于 2015-12-30T11:38:52.343 回答
0

如果您希望将父级缓存在本地并存储在 Maven 存储库中,目前这是不可能的。

我在这里添加了功能请求: http ://forums.gradle.org/gradle/topics/support_for_gradle_parent_shared_between_projects_cached_locally

于 2014-06-03T13:20:46.840 回答
0

为了实现您的目标,您可以应用此处的 Gradel 用户指南中解释的“多项目构建”概念

基本上,您可以通过创建 gradle.build 文件和 gradle.settings 文件来创建定义一组通用配置的伞式项目。构建文件包含所有项目的公共属性、依赖项和插件,settings.gradle 定义了哪些子项目继承了这些配置。

此外,要了解 gradle 插件生态系统,您可以查看来源。

于 2013-03-18T13:49:12.800 回答