gradle多模块 java_java – 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项目),但由于缺少CommonLib jar参考,EjbProject项目在构建过程中失败。 。 Gradle不够聪明(或者我完全无能为力)配置我的EjbProject来使用从CommonLib项目构建阶段生成的Jar。

对于漫长而复杂的设置,我深表歉意。我一直在努力想出这个时间了一段时间,但几乎没有想法。我真的很感谢任何帮助社区。

谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Gradle 是一种基于 Groovy 的构建工具,用于构建和打包项目。对于多模块项目Gradle 提供了强大的支持。 要实现多模块项目打包,首先我们需要在项目的根目录下创建一个 settings.gradle 文件。在这个文件中,我们可以定义所有的子模块,告诉 Gradle 我们有哪些模块需要构建和打包。示例如下: ```groovy include ':module1' include ':module2' ``` 接下来,在各个子模块的 build.gradle 文件中,我们可以配置模块的依赖关系和打包方式。在每个模块的 build.gradle 中,我们可以使用 `apply plugin: 'java'` 或者其他适当的插件来声明这是一个 Java 模块。 ``` apply plugin: 'java' dependencies { // 在这里定义模块的依赖关系 } jar { // 在这里配置模块打包方式 } ``` 当我们完成了每个子模块的配置后,就可以在根目录下执行 `gradle build` 命令来构建整个项目Gradle 会根据 settings.gradle 文件中定义的模块列表,逐个构建并打包每个模块。 构建完成后,每个子模块的构建结果和打包文件都将保存在各自模块的 build 目录下。我们可以在 build/libs 目录中找到每个模块的可执行 Jar 文件以及其他产出物。 综上所述,使用 Gradle 对多模块项目进行打包非常方便。通过设置好依赖关系和打包方式,我们可以轻松地构建和打包整个项目,产生各个子模块的可执行文件和其他构建结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值