java - Gradle 。不知道自己是子项目的子项目

标签 java gradle

我正在创建一个多子项目 Java 项目。每个子项目都有自己独立的 git 存储库,并使用 git 子模块包含在 super 项目中。我们的首选情况是,我们的持续集成工具 (Jenkins) 会独立地将这些子项目构建到 .jars 中,而无需考虑或以其他方式了解 super 项目。

只需确保每个子项目都有一个 build.gradle,其中包含构建生成的 .jar 所需的所有信息,就可以很容易地实现这一点。唯一的复杂情况是某些子项目依赖于其他子项目。

如果您愿意始终让子项目从 Maven 或 Ivy 存储库中提取其依赖项的 .jars,那么即使这样也非常简单。然而,当我们在开发过程中构建我们的本地盒子时,我们希望能够构建和部署 super 项目的 .war 文件到 Tomcat 和所有的 .jars 到类路径上的某个地方并确保所有的 .jars是根据当前在我们自己的盒子上的代码副本构建的。 (也就是说,我们希望它的行为基本上就像我们使用了 compile(project(":otherproject")) 而不是 compile("group:otherproject:1.0-SNAPSHOT") 或类似的东西。)

我是 Gradle 的新手,我完全有可能遗漏了一些非常明显的东西,但我还没有找到处理这个问题的好方法。

我们可以做一些事情,这样通过从我们的 Maven 存储库中提取 .jars 来构建它的一组依赖项在一个文件中,而通过使用它的同级子项目在另一个文件中构建它的一组依赖项,但这看起来像干违规。 (在那种情况下,我们将有两个单独的地方来管理依赖项列表。)

我们可以创建子项目的构建脚本以始终从 Maven 存储库中提取,并让 super 项目的构建脚本包含每个子项目的部分,这些部分覆盖子项目中的依赖项,但这与前一个选项一样违反 DRY。

我考虑过让 super 项目实际内省(introspection)并根据需要修改每个子项目的依赖项列表( super 项目中的代码应该能够访问将对 Maven 工件的依赖项转换为相应的依赖项所需的所有信息依赖于同级子项目,我认为),但在仔细研究之后,我不确定如何去做。

希望大家帮帮忙。谢谢!

最佳答案

在项目和外部依赖项之间动态切换目前不是 Gradle 中的一流功能。但是,有 Prezi 的 Pride工具,我强烈建议试用一下。

关于java - Gradle 。不知道自己是子项目的子项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24016462/

相关文章:

java - 使用gradle/groovy任务将变量值替换为其他文件中的新更改/增量值?

cordova - 项目包含至少一个需要系统库的插件。 ANT不支持此功能。请使用gradle构建

android - 多个dex文件定义 Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;

java - 扩展类和静态变量

java - 从ListView到TextView(解析)

java - Apache POI MissingCellPolicy 不适用于 Excel 读写操作

jakarta-ee - Netbeans:如何创建Gradle Java EE项目?

java - Gradle 中的多个依赖项版本

java - 为什么这不能形成一个好看的正方形?

java - 一台服务器支持多个客户端 Java