前言
最近的一个项目里面需要使用gradle打一个可执行的jar包,在网上看了一堆帖子照着做最后都不是很成功,最后终于参考StackOverflow上的帖子搞定了可执行jar包的打包脚本,因此做一个笔记对这个进行一下记录。
这里是本文的正片
我的代码因为包含了groovy的代码,因此在脚本中包含了groovy的部分配置,如果不适用groovy请去掉相关内容。
buildscript {
repositories {
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
}
dependencies {
classpath "com.github.jengelman.gradle.plugins:shadow:5.1.0"
}
}
plugins {
id 'java'
id 'groovy'
id 'application'
id 'com.github.johnrengelman.shadow' version '5.1.0'
}
apply plugin: 'com.github.johnrengelman.shadow'
apply plugin: 'java'
apply plugin: 'groovy'
apply plugin: 'application'
group 'groupId of your project' //项目的groupid
version '0.0.1'
mainClassName = "your mainClassName" //项目main方法所在的类名,需要包含完整的包路径
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
//设置编译字符集
tasks.withType(JavaCompile) {
options.encoding = "UTF-8"
}
sourceSets {
main {
groovy {
srcDir 'src/main/groovy' // 指定groovy源码目录
}
java {
srcDir 'src/main/java' // 指定java源码目录
}
resources {
srcDir 'src/main/resources' //资源目录
}
}
}
//这里添加你的依赖
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile files('your class files path')
testCompile group: 'junit', name: 'junit', version: '4.12'
//集成groovy
compile 'org.codehaus.groovy:groovy-all:2.5.8'
//集成fastjson
compile group: 'com.alibaba', name: 'fastjson', version: '1.2.59'
}
//使用shadow进行打包
shadowJar {
baseName = 'baseName'
classifier = null
version = "0.0.1"
manifest {
attributes "Main-Class": mainClassName
}
configurations = [project.configurations.runtime] //配置包中包含的依赖的jar包
}
然后使用shadowjar打包即可。