前言
最近的一个项目里面需要使用 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 打包即可。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于