1

我是第一次在一个多模块项目中使用 Gradle,并且想知道是否有任何关于正确/最佳方式来进行这种工作的依赖管理的共识。据我所知,有两种方法,第一种方法似乎更被广泛接受。它看起来像:[对不起,如果这个虚构的项目是蹩脚的!]

-- MyProject
---- settings.gradle
---- build.gradle
---- coreProject
---- servicesProject
------ servicesSubProject
---- warProject
---- common

按照这种方法,所有管理都在单个 build.gradle 文件中完成(其他外部 .gradle 文件可用于定义各种工件),并且各个项目依赖项将在其各自的“项目”定义部分中进行管理,例如:

project('servicesProject:servicesSubProject') {
    dependencies {
        compile project(':common')
        compile spring.data
        compile spring.framework.persistence
        compile spring.framework.security
        compile persistence.hibernate.core
        compile persistence.postgresql
    }
}

另一种方法是为每个子项目创建一个 build.gradle 文件,如下所示(这里子项目的依赖项位于该项目的 build.gradle 文件的依赖项部分):

-- MyProject
---- settings.gradle
---- build.gradle
---- coreProject
------ build.gradle
---- servicesProject
------ build.gradle
------ servicesSubProject
-------- build.gradle
---- warProject
------ build.gradle
---- common
------ build.gradle

正如我所说,从我能够阅读的内容来看,似乎第一种方法比第二种方法使用更广泛。Spring Framework gradle 文件就是这样设置的。然而,在我全力以赴之前,我想我应该问一下是否有权衡或其他影响我也应该注意。感谢您的任何想法!

4

2 回答 2

3

每个子项目都有一个单独的构建脚本可能更常见。将一个大脚本分解为多个小脚本是一种自然的方式,这通常是一件好事。也就是说,一些团队更喜欢使用单个构建脚本,而 Gradle 足够灵活以适应这种情况。

如果您使用多个构建脚本,则以它们所属的子项目命名它们是值得的。这可以通过添加以下代码来实现settings.gradle(代码假设只有一级子项目):

rootProject.children.each { it.buildFileName = it.name + ".gradle" }

PS:尽管依赖声明通常构成子项目构建脚本的很大一部分,但是否使用一个或多个构建脚本的决定并不特定于依赖管理。

于 2012-08-06T13:04:14.390 回答
0

我目前正在开发一个包含约 30 个 gradle 子项目的 Java 项目。现在我们使用两种选择的方便(至少对我们来说)混合:

/(root)
- build.gradle
- subproject_1
- subproject_2
- webservices
-- build.gradle
-- webservice 1
-- webservice 2
- database
- build.gradle
-- db-binding1
-- db-binding2

我们的根项目中有一个build.gradle,定义了所有常见的东西,如 Maven 存储库、插件、编码等。该文件还包含所有子项目的所有信息compileruntime依赖关系。我们喜欢在一个文件中定义所有外部库的想法。

然后 - 由于我们的子项目按技术主题分组 - 我们有“内部”build.gradle文件,这些文件定义了特定于其子项目(并且仅限于它们)的任务和配置。例如,我们有一个 build.gradle 定义任务用于 web 服务绑定,一个用于数据库绑定等等。

你的里程可能会有所不同。如果您的项目更大,您可能希望build.gradle每个子项目有一个。

但是,您以后可以随时改变您的习惯,而无需太多努力,并且很容易拆分/合并您的文件。

于 2016-01-30T20:27:39.177 回答