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

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