gradle在Java项目构建参数详细解释


wechat.jpg

如果需要了解更多细节或答疑,请关注我的公众号:

总结整理Java项目创建时常见gradle参数的解释与用法。



首先通过Idea的spring initializr新建一个Gradle构建的Java任务,随便选择几个springboot组件:


选择Finish,项目新建完毕,打开build.gradle文件,会看到以下一些内容,具体三个级别:buildscript/allprojects/repositories已经添加注释如下(根据自己的项目添加了对应的阿里云镜像以及部分依赖):

//buildScript块主要是为了Gradle脚本自身的执行,获取脚本依赖插件。
buildscript {
    ext {
        springBootVersion = '2.1.0.RELEASE'
    }
    repositories {
        mavenLocal()
        maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8

//allprojects块的repositories用于多项目构建,为所有项目提供共同所需依赖包。而子项目可以配置自己的repositories以获取自己独需的依赖包(即下面的repositories)。
allprojects {
    repositories {
        mavenLocal()
        maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
        mavenCentral()
    }
}

//根级别的repositories主要是为了当前项目提供所需依赖包,比如log4j、spring-core等依赖包可从Nexus私服或者mavenCentral仓库获得。
repositories {
    mavenLocal()
    maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
    mavenCentral()
}

dependencies {
    //mybatis-generator 插件
    implementation('org.mybatis.generator:mybatis-generator-core:1.3.7')
    //mybatis-springboot 集成
    implementation('org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.2')
    //MYSQL5.X版本Driver
    implementation('mysql:mysql-connector-java:5.1.47')
    //mybatis-springboot 测试集成
    testImplementation('org.mybatis.spring.boot:mybatis-spring-boot-starter-test:1.3.2')

    testImplementation('org.springframework.boot:spring-boot-starter-test')
    implementation('org.springframework.boot:spring-boot-starter-jdbc')
}

可以看出我们先通过buildscripts下载对应需要的运行的plugin,然后通过allprojects下载全局系列依赖,然后通过repositories下载本项目需要的依赖。


其中介绍下以下几个plugin分别代表的是什么意思与作用:

对应的前三个plugin引入的Task如上截图所示,其中:

apply plugin: 'org.springframework.boot'

是用来引入自动构建Springboot相关的Task

apply plugin: 'eclipse'

是用来做对应项目标准化操作的Task

apply plugin: 'java'

是剩余蓝色部分,传统Java项目对应的一系列构建Task

apply plugin: 'io.spring.dependency-management'

这个Plugin是Springboot2开始引入的新的构建插件,主要解决的是引用依赖关系的,后续对应的依赖版本都可以忽略不写,具体如下:

简介:

        Spring IO Platform是Spring官网中排第一位的项目。它将Spring的核心API集成到一个适用于现代应用程序的平台中。提供了Spring项目组合中的版本依赖。这些依赖关系是经过测试,可以保证正常工作。


为什么要使用?

        Spring IO Platform主要是解决依赖版本的冲突问题。举个栗子:在使用Spring的时候,经常会使用到第三方库,一般大家都是根据经验挑选一个版本浩或挑选最新的,其实这是存在隐患的。除非做过完整的测试,保证集成该版本的依赖不会出现问题,否则风险很大,且后续扩展会越来越困难。因为随着业务复杂度的增加,集成的第三方组件会越来会多,依赖之间的关联也会也来越复杂。

        Spring IO Platform正好解决了这些问题,在我们添加第三方依赖时,不需要写版本号,它能自动帮我们选择一个最优的版本,保证最大限度的扩展。


最后如果有上传到私服需要的话,引入maven plugin和uploadArchives Task,执行gradle upload 命令即可上传jar包至对应私服,具体配置如下:

apply plugin: 'maven'
uploadArchives {
    repositories {
        mavenDeployer {
            //SNAPSHOT版本提交地址
            snapshotRepository(url: 'http://maven.nexus.com/nexus/content/repositories/snapshots/') {
                authentication(userName: 'admin', password: 'abc123')
            }

            //正式版本提交地址
            repository(url: 'http://maven.nexus.com/nexus/content/repositories/releases/') {
                authentication(userName: 'admin', password: 'abc123')
            }
            pom.groupId = group
            pom.version = version
            pom.artifactId = 'mybatisspringboot'
        }
    }
}


基本完成,以上就是99%常规项目中涉及的插件以及对应Task。


如果需要了解更多细节或答疑,请关注我的公众号:

wechat.jpg


猜你喜欢

转载自blog.51cto.com/14054453/2312711