10、Gradle构建多模块项目配置及发布

项目模块化

在企业项目中,包层次和类关系比较复杂,把代码拆分成模块通常是最佳实践,这需要你清晰的划分功能的边界,比如把业务逻辑和数据持久化拆分开来。项目符合高内聚低耦合时,模块化就变得很容易,这是一条非常好的软件开发实践。

图片

项目范围

model、repository、web 都是子项目。

allprojects 是所有的项目,比子项目就多一个 root 根项目。

图片

新建一个 todo-gradle 的项目,里面有三个子模块。此时 setting.gradle 就会有变化,include 后面跟的就是子模块名字。gradle 的窗口也多了三个子模块,暂时没有任何依赖。

图片

根据上面的图 repository 要依赖 model ,需要在 repository 模块里的 build.gradle 的脚本文件中添加如下脚本。

// 依赖子模块 model
compile project(':model')

添加完依赖点击刷新,发现 repository 模块中编译和运行时依赖都多了一个 model 模块。

图片

根据上面的关系图 web 模块不仅依赖 repository 模块还依赖 model 模块。这时只需要在 web 的模块中添加一个 repository 的依赖就可以了。根据传递性依赖的原理 repository 也会将 model 带入到 web 模块中。添加配置如下。

// 依赖子模块 repository
compile project(':repository')

添加完脚本,刷新构建发现 web 模块中确实不仅依赖了 repository 模块也间接依赖了 model 模块。

图片

配置优化

公共的插件配置

新建的项目里可以发现每个子模块的 build.gradle 的构建脚本里都有引入 java 这个插件。

图片

这些公共的配置都可以提到总项目的 build.gradle 的脚本配置中,写一处所有子项目都拥有。

// 所有项目依赖的配置
allprojects {
    apply plugin: 'java'
}

图片

公共的依赖配置

现在要去每个子模块中都要依赖 log-back 这个jar包用于记录日志。

此时我们可以在总项目的 build.gradle 的配置脚本中添加如下配置。

// 所有子项目共享的依赖配置
subprojects {
    repositories {
        maven { url "http://maven.aliyun.com/nexus/content/groups/public/" }
        mavenCentral()
    }
    dependencies {
        compile 'ch.qos.logback:logback-classic:1.2.1'
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
}

统一管理version和group

项目的根目录下新建一个 gradle.properties 配置文件,文件名字一定要是这个名字不能随便定义,里面配置上 version 和 group 。之前每个子模块里都有版本和组的配置,这里配置了子模块里都可以删除了。group之前都有各自的现在统一成一个了。

version=1.0
group='com.avatar.todo'
#org.gradle.jvmargs=-Xmx1536M
#org.gradle.caching=true
#org.gradle.parallel=true

Gradle 默认的参数如果根据情况需要调整也可以配置到这个文件中,注释的部分配置就是关于Gradle 构建的优化配置。

图片

项目的发布

下图是发布的详细流程图,通过 Gradle 构建工具将我们的jar包发布到本地仓库和远程仓库。

图片

发布需要在总项目的 build.gradel 的脚本文件中添加如下脚本配置。

// 所有项目的依赖配置
allprojects {
    apply plugin: 'java'
    // 添加 maven-publish 插件
    apply plugin: 'maven-publish'
    // 发布配置
    publishing {
        publications {
            myPublish(MavenPublication) {
                from components.java
            }
        }
        // 发布到的仓库
        repositories {
            maven {
                name 'myRepo'
                url ''
            }
        }
    }
}

了解更多:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值