一、将项目及依赖打包成一个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