Gradle 打包指南

一、将项目及依赖打包成一个jar

使用插件 Jaror applicaton插件) shadowJar

使用jar或者application插件设置mainClass

示例:

jar:

jar {

    manifest {

        attributes 'Main-Class': 'transaction.StaticAutowiredTest'

        //attributes 'Class-Path': 'my-lib.jar'

    }

}

application:

apply plugin: ‘application’

mainClassName = "transaction.StaticAutowiredTest"


使用shadowJar 合并依赖包文件到一个jar,并对一些依赖文件配置进行过滤等操作

buildscript {

    repositories {

        jcenter()

    }

    dependencies {

        classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.4'

    }

}

apply plugin: 'com.github.johnrengelman.shadow'

shadowJar {

    baseName = "java_demo"  //前缀名称

    classifier = null   //名称后面的all

    version = null      //名称上的版本号

    //合并依赖jar包中指定文件名的文件,避免覆盖,导致无法运行

    mergeServiceFiles {

        path = 'META-INF/spring.*'

    }

}

备注:shadowJar 继承 jar

使用shadowJar 打包在build/libs/ 文件名默认为 projectName-version-all.jar


二、将项目打包成lib包类型(利用copy task

task deploy(type: Copy) {

    println(libsDir)

    println("${appName}-${version}.jar")

    from(libsDir) {

        include "${appName}-${version}.jar"

    }

    from(configurations.compile) {

        include '*.jar'

        into "libs"

    }

    into “$buildDir"

}


三、归档文件

task toTar(type: Tar) {

    println("$buildDir")

    from($buildDir")

    in(目标目录)    //不写表示根目录

}

println toTar.archiveName

println relativePath(toTar.destinationDir)

println relativePath(toTar.archivePath)

备注:归档默认打到build/distributions/ 目录下

归档文件名 project-version.压缩格式



小知识点:

sourceSets 控制项目javaresources的文件目录地址

示例:

sourceSets {

    main {

        java {

            srcDirs = [“demo”]

        }

        resources {

            srcDirs = ["test/$env/"]

        }

    }

}

java项目src/main/java目录为demo

java项目src/main/resources目录为test/$env

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章