一、修改jar任務
1). 打包成一個Jar
jar {
from {
//添加依懶到打包文件
//configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
configurations.runtime.collect{zipTree(it)}
}
manifest {
attributes 'Main-Class': appMainClass
}
}
執行命令gradle build
或者./gradlew build
,可在build/libs
查看生成的jar包
2). 打包成多個Jar
jar {
manifest {
attributes 'Main-Class': appMainClass
}
}
task clearJar(type: Delete) {
delete 'build/libs/lib'
}
task copyJar(type: Copy) {
from configurations.runtime
into('build/libs/lib')
}
task release(type: Copy, dependsOn: [build, clearJar, copyJar])
執行命令gradle release
或者./gradlew relesse
,可在build/libs
查看生成的jar包
兩種方式都各有缺陷,打包成一個Jar當依懶比較多情況下Jar包會很大,其它工程要要單獨引用某個Jar不方便;打包成多個Jar沒有啟動腳本,不熟悉Java的新手不懂得運行。
二、使用application插件
apply plugin: 'application'
mainClassName = appMainClass
執行命令gradle build
或者./gradlew build
,查看build/distributions
會有兩個壓縮文件,壓縮文件包含了兩個文件夾,bin為啟動腳本,lib則是軟件jar包和依賴。還可以執行./gradlew installDist
生成未壓縮文件目錄build/install
。
這種方式最為簡單,不需要添加復雜的腳本,打包成多個jar并生成啟動腳本可一鍵運行
全部腳本參考
def appMainClass = 'HelloWorldKt'
apply plugin: 'java'
apply plugin: 'kotlin'
apply plugin: 'maven'
archivesBaseName = 'app'
// 生成啟動腳本打包
//apply plugin: 'application'
//mainClassName = appMainClass
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version"
testCompile group: 'junit', name: 'junit', version: '4.12'
}
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}
jar {
configurations.runtime.each { println it.path }
println "========="
configurations.compile.each { println it.path }
println "========="
from {
//添加依懶到打包文件
//configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
configurations.runtime.collect { zipTree(it) }
}
manifest {
attributes 'Main-Class': appMainClass
}
}
task clearJar(type: Delete) {
delete 'build/libs/lib'
}
task copyJar(type: Copy) {
from configurations.runtime
into('build/libs/lib')
}
task release(type: Copy, dependsOn: [build, clearJar, copyJar])