我正在创建一个多子项目Java项目.子项目每个都有自己独立的git存储库,并使用git子模块包含在超级项目中.我们首选的情况是,我们的持续集成工具(Jenkins)将独立地将这些子项目构建到.jars中,而不考虑或以其他方式了解超级项目.
这可以通过确保每个子项目都有一个build.gradle非常容易地完成,该build.gradle具有构建由构建产生的.jar所需的所有信息.结果的唯一复杂因素是某些子项目依赖于其他子项目.
如果您愿意总是让子项目从Maven或Ivy仓库中提取其依赖项'.jars,那么即使这样也非常简单.但是,当我们在开发过程中构建我们的本地盒子时,我们希望能够构建和部署超级项目的.war文件到Tomcat以及所有.jars到类路径上的某个地方,并确保所有的.jars是根据我们自己的盒子上的代码副本构建的.(也就是说,我们希望它的行为基本上就像我们使用compile(project(":otherproject"))而不是编译("group:otherproject:1.0-SNAPSHOT")或其他一些.)
我对Gradle很新,而且我完全有可能错过一些非常明显的东西,但我还没有找到一个很好的方法来处理这个问题.
我们可以做一些事情,通过从我们的Maven存储库中拉出.jars来构建它的依赖集在一个文件中,并通过在另一个文件中使用其兄弟子项目来构建它的依赖集,但这看起来像是DRY违规.(在这种情况下,我们有两个不同的位置来管理依赖项列表.)
我们可以创建子项目的构建脚本,以便始终从Maven存储库中提取并让超级项目的构建脚本包含每个子项目的部分,这些部分覆盖子项目中的依赖项,但这与前一个选项一样多.
我想也许可以让superproject实际内省并根据需要修改每个子项目的依赖项列表(超级项目中的代码应该可以访问将Maven工件的依赖项转换为相应的依赖项所需的所有信息.兄弟子项目,我想),但在仔细研究之后,我不确定如何去做.
我希望你们能帮忙.谢谢!
| 归档时间: |
|
| 查看次数: |
543 次 |
| 最近记录: |