使用gradle打包jar包

使用gradle打包jar包

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

近期用android studio来做android开发的IDE,它是使用gradle来构建的,于是開始学习gradle.

如今有一个项目,里面有一个android-library的模块。我想在做release的时候,把这个模块中我写的代码编译并打包成jar包,而且和依赖的jar包拷贝出来,但android studio对android-library的管理是把其与依赖包打包成一个aar的包的,显示这不是我要的,于是便想用gradle来实现。

首先我找到的第一种方法是在模块中的build.gradle添加�一个编译jar包的task.代码例如以下:

task releaseJar(type:Jar) {
    from sourceSet.main.java
    destinationDir = file('build/libs')
}

可是运行的时候,却提示里面的Log类找不到。显示用这样的方法仅仅能编译一般的java文件,无法编译用到了android库的源文件。可能是还要在哪里加入�依赖吧。

另外一种方法是在stackoverflow中找到的,它也确实能打包成jar包。代码例如以下:

android.libraryVariants.all { variant ->
    def name = variant.buildType.name
    if (name.equals(com.android.builder.BuilderConstants.DEBUG)) {
        return; // skip debug builds
    }
    def task = project.tasks.create "jar${name.capitalize()}, Jar
    task.from variant.javaCompile.destinationDir
    artifacts.add('archives', task)
}

然后运行gradle jarRelease就能够了。

可是它会把我的R.java也编译进去,并且这个文件又非常大。我原来的代码编译之后打包才不到13K,加上编译这个文件的话,要28K。

第三种方法就比較取巧了。这是由于gradle在构建的时候,会对这个模块的class文件先打包成classes.jar并放在build/bundles/release。于是我仅仅须要把它拷出来,并重命名就能够了。

于是代码例如以下:

task releaseJar(type: Copy) {
    from( 'build/bundles/release')
    into( 'build/libs')
    include('classes.jar')
    rename('calsses.jar', 'superlog' + VERSION_NAME + '.jar')
}

task releaseLib(type: Copy, dependsOn: releaseJar) {
    into "../../release"
    from 'libs'
    from 'build/libs'
}

当中VERSION_NAME是我定义的一个变量,在gradle.properties文件里。该文件与gradle.build在同级文件夹。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/118282.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python数组求和_python数组求和

    python数组求和_python数组求和广告关闭腾讯云11.11云上盛惠,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!作者:dyq666,zhihu.compeopledyq666本专题主要介绍哈希表和指针两种方法来解决该类问题,从两个数之和引申到三个数之和,再从四个数之和的问题上思考如何构建出一种通用的代码(可以解决n个数之和)。本文主要内容是通过001问题来初步了解数组求和的两种常用方法。0…

    2022年8月13日
    3
  • 1000套安卓(Android)毕业设计(带论文)、大作业、实例快速下载 (Android Studio)

    1000套安卓(Android)毕业设计(带论文)、大作业、实例快速下载 (Android Studio)ctrl+F快速定位序号 类型 项目名称 1 毕业设计 毕业设计-基于安卓Android学生考勤信息管理系统.zip 2 毕业设计 毕业设计-安卓Android教务选课成绩管理系统.zip 3 毕业设计 114基于Android的理财记账本20141215+论文+需求文档+演示视频.zip.zip 4 毕业设计 Android科大讯飞语音识别.zip 5 毕业设计 基于android的点餐系统.zip.z..

    2022年6月3日
    32
  • 微信H5页面 会被软键盘顶起来

    微信H5页面 会被软键盘顶起来

    2021年7月5日
    77
  • QQ密码防盗十大建议

    QQ密码防盗十大建议1.去腾讯申请密码保护,这样如果密码被激活成功教程或自己忘记了还可以利用密码保护功能取回来。    2.QQ密码的位数一定要超过8位,而且最好包含数字、字母和特殊符号,否则以现代计算机的超强计算能力,要想暴力激活成功教程你的QQ密码简直是易如反掌。    3.不要在QQ中填入真实的年龄、E-mail等敏感消息,更不能告诉任何人,小心行得万年船。    4.不要随意运行别人发给你的文件,即便那些看起来很诱人的文件也

    2022年7月20日
    40
  • matlab中矩阵的秩,matlab矩阵的秩

    matlab中矩阵的秩,matlab矩阵的秩如下所示为一方阵在matlab输入矩阵:A=[124;407913];2.2查阅matlabhelp可以知道,利用eig函数可以快速求解矩阵的特征值与特征……Matlab矩阵分析与处理_理学_高等教育_教育专区。1、单位矩阵,随机矩阵,零矩阵和对角阵2、产生5阶希尔伯特矩阵H和5阶帕斯卡矩阵P,且求其行列式的值Hh和Hp以及它们……结构数…

    2022年5月29日
    39
  • 架构要素-高可用性[通俗易懂]

    架构要素-高可用性

    2022年1月31日
    47

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号