文档章节

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

SuShine
 SuShine
发布于 09/19 19:38
字数 490
阅读 11
收藏 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
博文 504
码字总数 148653
作品 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

没有更多内容

加载失败,请刷新页面

加载更多

Shell特殊符号总结以及cut,sort,wc,uniq,tee,tr,split命令

特殊符号总结一 * 任意个任意字符 ? 任意一个字符 # 注释字符 \ 脱义字符 | 管道符 # #号后的备注被忽略[root@centos01 ~]# ls a.txt # 备注 a.txt[root@centos01 ~]# a=1[root@centos01...

野雪球
44分钟前
2
0
OSChina 周二乱弹 —— 程序员圣衣

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @达尔文:分享Skeeter Davis的单曲《The End of the World》 《The End of the World》- Skeeter Davis 手机党少年们想听歌,请使劲儿戳(这里...

小小编辑
今天
4
0
[ python import module ] 导入模块

import moudle_name ----> import module_name.py ---> import module_name.py文件路径 -----> sys.path (这里进行查找文件) # from app.web import Personimport app.web.Person as Pe......

_______-
昨天
3
0
Redis性能问题排查解决手册

一、性能相关的数据指标 通过Redis-cli命令行界面访问到Redis服务器,然后使用info命令获取所有与Redis服务相关的信息。通过这些信息来分析文章后面提到的一些性能指标。 nfo命令输出的数据可...

IT--小哥
昨天
2
0
mixin混入

①新建mixin.js文件 const mixin = { methods: { /** * 分页公共方法 */ handleSizeChange(val) { this.pageData.size = val; this.query(); }, hand......

不负好时光
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部