文档章节

FatJar:适用于sdk多module打包和合并多个jar的gradle插件

SuShine
 SuShine
发布于 09/19 19:38
字数 490
阅读 31
收藏 0

Download

usage:

1.下载fatJar.gradle放置于project根目录

2.在project的build.gradle中添加依赖和配置:

apply from: 'fatJar.gradle'
buildscript {
    dependencies {
        classpath 'xyz.bboylin:FatJarPlugin:1.0.5'
    }
}

//可配置项
fatJarExt {
	//这里可配置需要打包的module名和需要加入的第三方jar绝对路径
    jarPaths = ["/github/okhttp.jar",
             "libtwo",
             "commonlib"]
    //配置需要添加assets的module名,没有可删掉此项
    assetsPaths = ["libtwo","commonlib"]
    //最后output的jar名
    output = "result.jar"
    //manifest中created-by的值
    owner = "your name or your organization"
    //manifest中version的值
    version = 'your sdk version'
    //只打debug包的话加上这句,只打release包的话不加
    isDebug = true
}

3.项目根目录下命令行执行gradlew fatJar即可。

注意:

如果你的module不在项目根目录下,比如D:\MyApplication\components\liboneD:\MyApplication\components\player\bdplayerD:\MyApplication是我的项目根目录,那你不能直接写"libone",要改为"components:libone",即module用相对路径。示例:

fatJarExt {
    jarPaths = ["/github/okhttp.jar"
             ,"libtwo",
             ,"commonlib"
             ,"components:libone"
             ,"components:player:bdplayer"]
    assetsPaths = ["libtwo"
                    ,"components:libone"
                    ,"components:player:bdplayer"]
    //最后output的jar名
    output = "result.jar"
    //manifest中created-by的值
    owner = "your name or your organization"
    //manifest中version的值
    version = 'your sdk version'
    //只打debug包的话加上这句,不加默认只打release包
    isDebug = true
}

示例

apply plugin: 'FatJarPlugin'

def ROOT_BUILD_PATH = project.buildDir.absolutePath
def JAR_NAME = "ParserEngine_${buildInfo.version}.jar"

def BUBBLE_ASSETS_PATH = "${rootProject.rootDir.absolutePath}/Engines/BubbleEngine/src/main/assets"
def CARD_PARSER_ASSETS_PATH = "${rootProject.rootDir.absolutePath}/Engines/CardEngine/src/main/assets"

def BUBBLE_ASSETS_FILES = ["sms_bubble_stable_ac.index", "sms_bubble_stable_others.index", "sms_bubble_stable_regex.db"]
def CARD_RULE_ASSETS_FILES = ["sms_card_stable_ac.index", "sms_card_stable_others.index", "sms_card_stable_regex.db"]
def CARD_PARSER_ASSETS_FILES = ["parser.dic", "parser.zip"]

def SDK_OUT_PATH = "${ROOT_BUILD_PATH}/sdk_out_temp"
def SDK_ZIP_NAME = "parser_engine_${buildInfo.version}.zip"

def SO_PATH = "${rootProject.rootDir.absolutePath}/ParserEngine/src/main/jniLibs"

//依赖assembleDebug或者assembleRelease
fatJarTask.dependsOn({
    def tasks = new ArrayList<>()
    def taskName = fatJarExt.isDebug ? ":assembleDebug" : ":assembleRelease"
    fatJarExt.jarPaths.each {
        if (!it.contains(".jar")) {
            tasks.add(":" + it + taskName)
        }
    }
    return tasks.toArray()
})

//可配置项
fatJarExt {
    jarPaths = ["ParserEngine", "commonlib", "ActionLib"]
    output = JAR_NAME
    owner = "parserengine_${buildInfo.version}_${buildInfo.vcs_version}_${buildInfo.build_time}"
//    version = buildInfo.version
//    isDebug = true
}

task copySDK(type: Copy, dependsOn: [":fatJarTask"]) {
    delete JAR_NAME
    delete SDK_OUT_PATH
    delete "$ROOT_BUILD_PATH/$SDK_ZIP_NAME"

    into('/jniLibs') {
        from SO_PATH
    }
    into('/libs') {
        from JAR_NAME
    }
    into('/assets') {
        def allFiles = []
        allFiles.addAll(BUBBLE_ASSETS_FILES.collect { "${BUBBLE_ASSETS_PATH}/${it}" })
        allFiles.addAll(CARD_PARSER_ASSETS_FILES.collect { "${CARD_PARSER_ASSETS_PATH}/${it}" })
        allFiles.addAll(CARD_RULE_ASSETS_FILES.collect { "${CARD_PARSER_ASSETS_PATH}/${it}" })
        from allFiles
    }
    destinationDir(file(SDK_OUT_PATH))
}

task makeSDK(type: Zip, dependsOn: [copySDK]) {
    from SDK_OUT_PATH
    archiveName SDK_ZIP_NAME
    destinationDir(file(ROOT_BUILD_PATH))
}

本文转载自:https://github.com/bboylin/FatJar

共有 人打赏支持
SuShine
粉丝 123
博文 540
码字总数 153477
作品 0
朝阳
后端工程师
私信 提问
Java 打包 FatJar 方法小结

在函数计算(Aliyun FC)中发布一个 Java 函数,往往需要将函数打包成一个 all-in-one 的 zip 包或者 jar 包。Java 中这种打包 all-in-one 的技术常称之为 Fatjar 技术。本文小结一下 Java 里打...

倚贤
08/28
0
0
Eclipse 使用fatjar打包jar文档

发现eclipse打包jar无法连带打包第三方lib,于是选择安装插件fatjar,现在说明fatjar安装过程: 1、安装方法: 1)下载安装: https://sourceforge.net/projects/fjep/files/ 解压下载的ZIP...

yzbty23
06/15
0
0
阿里Java架构师打包 FatJar 方法小结

在函数计算(Aliyun FC)中发布一个 Java 函数,往往需要将函数打包成一个 all-in-one 的 zip 包或者 jar 包。Java 中这种打包 all-in-one 的技术常称之为 Fatjar 技术。本文小结一下 Java 里打...

Java互联网架构师
08/29
0
0
Eclipse打JAR包,插件FatJar安装与使用

http://sourceforge.net/projects/fjep/files/fatjar/ 下载fatJar插件,解压缩后是一个.../plugins/(net...)把plugins下面的(net..)文件夹拷贝到eclipse 的plugins下,重新启动Eclipse3.1,Wi......

银月光海
2014/04/24
0
2
eclipse打包使用了Mysql数据库的jar,jar无法连接上数据库的解决方法

楼主是个新手,跟着一本教材写了一个带数据库的小聊天软件,终于大功告成,在使用eclipse生成jar的时候,却总是连接不上mysql,网上百度逛论坛发现是eclipse的自带EXPORT无法将第三方jar一起...

信心十足
2015/07/22
0
1

没有更多内容

加载失败,请刷新页面

加载更多

聊聊flink的MemCheckpointStreamFactory

序 本文主要研究一下flink的MemCheckpointStreamFactory CheckpointStreamFactory flink-runtime_2.11-1.7.0-sources.jar!/org/apache/flink/runtime/state/CheckpointStreamFactory.java /*......

go4it
22分钟前
1
0
注册全局组件

注册全局组件的好处是,可以直接在html中直接调用组件而不用每次都要在vue文件中注册组件,坏处也是很明显的,因为每个vue都默认加载了全局组件,所以全局组件如果非常庞大,会拖慢所有页面的...

Carbenson
27分钟前
1
0
二十分钟教你如何将区块链应用与函数计算相结合

前言 本篇文章适合对区块链应用感兴趣或是想要通过函数计算服务进一步开发区块链应用的新人。本文将结合阿里云区块链服务、阿里云函数计算服务、阿里云日志服务 以及社区应用 Marbles,手把手...

阿里云官方博客
29分钟前
1
0
Double数相加后结果不准确

在我们进行两个double运算时,例如:2..0-1.1 不是想象的输出0.9,而是0.89999999999999999。其主要原因是浮点数值采用二进制系统表示,而在二进制系统中无法精确的表示分数1/10。这就好像十...

嘴角轻扬30
37分钟前
1
0
去除移动端点击效果

移动端点击时,会有一个类似active的短暂背景淡出效果,去除该效果可使用 -webkit-tap-highlight-color: rgba(255, 0, 0, 0);

originDu
38分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部