一、將項目及依賴打包成一個jar
使用插件 Jar(or 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 控制項目java、resources的文件目錄地址
示例:
sourceSets {
main {
java {
srcDirs = [“demo”]
}
resources {
srcDirs = ["test/$env/"]
}
}
}
將java項目src/main/java目錄爲demo
將java項目src/main/resources目錄爲test/$env