Gradle编译全部依赖

介绍

利用gradle进行编译打包全部依赖,避免jar包和war包缺失依赖,导致无法直接执行,介绍2种方式打包全部依赖。
- gradle application plugin
- fat jar

Application plugin

利用gradle的Application插件构建jar包,不但可以打包全部的依赖,还可以直接生成可以执行的shell脚本。

https://docs.gradle.org/current/userguide/application_plugin.html

使用Application插件
// build.gradle文件

apply plugin: 'application'
指定应用的main函数在的类
// build.gradle文件

mainClassName = "org.gradle.sample.Main"
可以指定JVM启动参数
// build.gradle文件
applicationDefaultJvmArgs = ["-Dgreeting.language=en"]
Application插件编译的Jar包位置
(1) 利用gradle build编译项目之后,会生成build文件夹,完整位置在build/distributions
(2) distributions下有2个压缩包 *.tar, *.zip
(3) 解压任意一个压缩包,能看到lib, bin
(4) bin目录下包含可执行的shell脚本
(5) lib目录下全部的jar包

Fat Jar

http://www.baeldung.com/gradle-fat-jar

build.gradle文件示例
apply plugin: 'java'

repositories {
    mavenCentral()
}

dependencies {
    compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25'
    compile group: 'org.slf4j', name: 'slf4j-simple', version: '1.7.25'
}
使用Jar任务构建Fat Jar
// 指定main函数的类

jar {
    manifest {
        attributes "Main-Class": "com.baeldung.fatjar.Application"
    }

    from {
        configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    }
}
创建单独任务构建Fat Jar
task customFatJar(type: Jar) {
    manifest {
        attributes 'Main-Class': 'com.baeldung.fatjar.Application'
    }
    baseName = 'all-in-one-jar'
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    with jar
}
使用已有的gradle插件(shadow插件示例)
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.1'
    }
}

apply plugin: 'java'
apply plugin: 'com.github.johnrengelman.shadow'

译文来源

https://docs.gradle.org/current/userguide/application_plugin.html
http://www.baeldung.com/gradle-fat-jar

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值