1. 默认打包(不带依赖)
在build.gradle中配置
jar {
manifest {
attributes('Main-Class': 'org.x3.server.Server')
}
}
说明:
manifest:是配置META-INF/MANIFEST.MF文件
主要配置:
Main-Class:主运行类
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
作用:收集compile类依赖
打包命令:gradle jar
jar包位置:build/libs
2. 打可执行包(带依赖;使用gradle原生打包方式)
注意: 此打包方式处在的问题:当项目中使用到了spring或dubbo时,此种方式会存在问题。 当项目中有spring或dubbo时,建议使用shadow插件进行打包。
jar {
manifest {
attributes('Main-Class': 'org.x3.server.Server')
}
}
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
说明:
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
打包时,将compile类型依赖打入jar包
打包命令:gradle jar
jar包位置:build/libs
3. 打可执行包(带依赖;使用shadow插件)
该打包方式使用spring和dubbo也会存在问题。
buildscript {
repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath "com.github.jengelman.gradle.plugins:shadow:2.0.1"
}
}
apply plugin: "com.github.johnrengelman.shadow"
jar {
manifest {
attributes('Main-Class': 'org.x3.cloud.PaasServer')
}
}
说明:
1. 先引入shadow插件
2. 执行运行主类
打包命令:gradlew shadow
jar包位置:build/libs
4. 打可执行包-终极版(shadow)-解决spring spring.schemas问题
buildscript {
repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath "com.github.jengelman.gradle.plugins:shadow:2.0.1"
}
}
apply plugin: "com.github.johnrengelman.shadow"
shadowJar {
println("shadowJar run....")
zip64 true
manifest {
attributes("Main-Class": "PAAS.EPRIA.Common.Log.server.Server")
}
append("META-INF/spring.schemas")
append("META-INF/spring.handlers")
}
说明:
spring每个模块都有一个spring.schemas和一个spring.handlers文件
打包时如果不进行处理,多个spring.schemas和pring.handlers会被覆盖
append:意思追加该目录的问题的文件
zip64 true:默认情况下打包时文件应该少于65535个文件,如果超过了,需要配置该属性