我最近开始使用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项目),但由于缺少CommonLib jar参考,EjbProject项目在构建过程中失败。 。 Gradle不够聪明(或者我完全无能为力)配置我的EjbProject来使用从CommonLib项目构建阶段生成的Jar。
对于漫长而复杂的设置,我深表歉意。我一直在努力想出这个时间了一段时间,但几乎没有想法。我真的很感谢任何帮助社区。
谢谢!