Gradle多项目构建与jar包发布

Gradle多项目构建

关于项目模块化:java

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

一般在使用Maven构建项目的时候,咱们会将一个项目划分为多个模块,而后经过父工程去管理子模块。而 Gradle 也拥有相似的功能,咱们将其称之为多项目构建(multi-project build)。因此本小节咱们来看看,如何使用 Gradle 进行多项目构建,首先建立一个Gradle工程,过程以下:
Gradle多项目构建与jar包发布maven

自定义GroupId和ArtifactId:
Gradle多项目构建与jar包发布ide

选择本地的Gradle:
Gradle多项目构建与jar包发布模块化

项目建立完成后,目录结构以下:
Gradle多项目构建与jar包发布gradle

build.gradle构建脚本的内容以下:ui

plugins {
    id 'java'
}

group 'org.zero.example'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

setting.gradle文件的内容以下:url

rootProject.name = 'gradle-model'

而后在gradle-model基础上建立多个模块,和建立gradle项目是同样的,这里以 dao 、pojo 和 service 模块为例。建立好后工程目录结构以下:
Gradle多项目构建与jar包发布插件

注:父工程的src目录能够删除掉3d

从上图中能够看到子模块中是没有setting.gradle文件的,而此时父工程的setting.gradle文件的内容以下:

rootProject.name = 'gradle-model'
include 'dao'
include 'service'
include 'pojo'

不难看出,gradle的setting.gradle文件导入了子模块,因此它用来管理父工程包含哪些子模块

此时,咱们会发现父工程与子模块的build.gradle构建脚本的内容都是同样的,以下:
Gradle多项目构建与jar包发布

subprojects 方法能够设定全部子模块共享的配置,例如:全部模块都引入 java 插件、 repositories中配置的仓库以及依赖包和版本等。这样咱们就能够将一些配置复用起来,那么就不须要每一个子模块的build.gradle里都写同样的配置了。以下:
Gradle多项目构建与jar包发布

pojo模块由于不须要依赖外部的jar包,因此复用父工程的配置后能够留空,而dao依赖于pojo,因此须要单独配置一下依赖,service也是同理。gradle子模块引用另外一个子模块时,须要使用project方法,与引用外部依赖是不一样的。


将项目发布到本地Maven仓库

在上一小节中,咱们完成了最简单的多项目构建,本小节则介绍一下如何将项目发布到本地的Maven仓库中,这也是比较常见的需求。由于有些项目须要依赖别的项目,又没有搭建私服的状况下,就只能发布到本地仓库,而后在别的项目去依赖本地仓库中的jar包。Gradle发布项目到本地及远程Maven仓库的流程:
Gradle多项目构建与jar包发布

修改build.gradle构建脚本的内容以下,引用maven的发布插件:

// allprojects用于定义全部项目的配置
allprojects {
    apply plugin: 'maven-publish'
    apply plugin: 'java'

    sourceCompatibility = 1.8

    group 'org.zero.example'
    version '1.0-SNAPSHOT'

    repositories {
        mavenCentral()
    }

    dependencies {
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }

    publishing {
        publications {
            myPublish(MavenPublication){
                from components.java
            }
        }
    }
}

在构建脚本里引用了maven的发布插件后,此时gradle的控制台就会出现publishing选项,点击下图中的publishToMavenLocal便可发布到本地maven仓库中:
Gradle多项目构建与jar包发布

发布成功后,能够在本地仓库中查找到相应的目录:
Gradle多项目构建与jar包发布

以及jar包:
Gradle多项目构建与jar包发布

若是须要发布到私服上的话,能够配置私服地址,以下示例:

publishing {
    publications {
        myPublish(MavenPublication){
            from components.java
        }
    }
    repositories {
        maven {
            url 'http://example.com' 
        }
    }
}

而后点击publishing选项下的publish就能够进行发布了,但因为我这里没有现成的私服,就不对此作演示了

相关文章
相关标签/搜索