Gradle多模块项目设置
我最近开始使用Gradle并替换现有的基于Maven的项目。 过去我使用Maven处理多模块构建时遇到了很多问题。 Gradle在处理多模块建筑时一直呼吸新鲜空气,但它并不完美。
我的项目有以下文件夹布局:
-- Projects ---- EnterpriseApp1 ------ EarProject -------- build.gradle ------ EjbProject -------- build.gradle ------ WarProject -------- build.gradle ------ properties.gradle ------ build.gradle ---- CommonLib ------ build.gradle ---- ClientApplication ------ build.gradle
我遇到的问题是“EnterpriseApp1”和“ClientApplication”都依赖于CommonLib项目。 我不知道如何配置我的“EnterpriseApp1”构建文件以使用CommonLib项目作为“EjbProject”的依赖项。 我已经非常接近让这个工作,但还没有完成工作。 我通过复制“EnterpriseApp1”中的CommonLib文件夹取得了成功,但这不是一个长期的解决方案。
这是我在“EnterpriseApp1”中的当前properties.gradle文件:
include "EarProject", "EjbProject", "WarProject" includeFlat "CommonLib"
根据Gradle文档,“settings.gradle”文件中的“includeFlat”命令将包含与“settings.gradle”文件所在文件夹相同的杠杆中的项目(所需行为)。
EnterpriseApp1 / build.gradle文件:
subprojects { apply plugin: 'java' sourceCompatibility = 1.6 group = 'org.example' version = '1.0-SNAPSHOT' repositories { mavenCentral() ... } dependencies { } }
EnterpriseApp1 / EjbProject /的build.gradle:
apply plugin: 'java' sourceCompatibility = 1.6 repositories { mavenCentral() ... } dependencies { compile project(':CommonLib') compile group: 'org.restlet.jee', name: 'org.restlet', version: '2.0.11' compile group: 'ma.glasnost.orika', name: 'orika-core', version: '1.0' ... compile group: 'javax.jmdns', name: 'jmdns', version: '3.4.1' }
当我从EnterpriseApp1文件夹执行“gradle clean build”时,所有依赖项都按预期下载并且项目开始编译(包括CommonLib项目),但是在构建过程中EjbProject项目失败,因为它缺少CommonLib jar参考。 Gradle不够聪明(或者我完全无能;))配置我的EjbProject以使用从CommonLib项目构建阶段生成的Jar。
我为漫长而复杂的设置道歉。 我一直在努力解决这个问题已经有一段时间了,但几乎没有想法。 我真的很感谢社区的任何帮助。
谢谢!
您选择的目录布局已经提示了一个很好的解决方案。 我建议有三个独立的版本: EnterpriseApp1
, CommonLib
和ClientApplication
。 我将CommonLib
发布到Maven或Ivy存储库,以便其他两个版本可以从那里使用它。 对于本地开发,您可以将CommonLib
发布到本地Maven仓库(最简单)或基于文件的Ivy仓库。
- 如何从IntelliJ IDEA启动Vert.x服务器?
- 如何使用gradle复制classes文件夹中的资源文件?
- Gradle jacoco覆盖报告有多个子模块?
- 重复条目:gms / auth / api / signin / internal / zzf.class
- React-native build error Android – java.lang.UnsupportedClassVersionError:com / android / build / gradle / AppPlugin:不支持的major.minor版本52.0
- 将sourcesJar任务添加到自定义Gradle插件
- Gradles`jar`是一种方法吗?
- 如何为Android Studio打包和链接OpenCV binares和OpenCV Java SDK?
- Gradle发布尝试将RPM上传到Artifactory YUM repo两次,第二次失败,403