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