返回顶部
首页 > 资讯 > 后端开发 > Python >Java打包工具jar包详解
  • 439
分享到

Java打包工具jar包详解

2024-04-02 19:04:59 439人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

Java打包工具是Java开发工具中比较常用的一种,代码重新打包工具jarjar可以帮助你将其它用到的java库打包并嵌入到你自己的项目jar包中。这样做的原因有: 当你发布项目的时

Java打包工具是Java开发工具中比较常用的一种,代码重新打包工具jarjar可以帮助你将其它用到的java库打包并嵌入到你自己的项目jar包中。这样做的原因有:

当你发布项目的时候,把用到的库打包进现有项目jar包,可以让发布的这个jar包不比依赖于其它项目的jar包;

当你所用到的java库升级了以后,它所新发布的jar包可能和你现存的项目不匹配,为了保持项目的代码稳定性,你可以把编写代码时所用到的依赖jar包,全部打包进现在的项目jar包,以避免出现这个问题。

jarjar可以通过Ant任务的方式使用,也可以单独地在命令行下使用。打包代码时,如果你要重命名某些依赖包的名字的时候,jarjar会调用字节码转换(通过ASM)来更新代码,并自动做好其他工作。

以Ant任务的形式使用jar

我们现存的Ant任务里可以用jar任务来打包代码,比如:


<target name="jar" depends="compile">
    <jar jarfile="dist/example.jar">
        <fileset dir="build/main"/>
    </jar>
</target>

为了使用jarjar工具,我们创建一个叫jarjar的任务,由于JarJarTask是Ant标准任务Jar的子类,所以如果你不需要使用jarjar的特有功能的话,完全可以像这样调用jarjar工具:

就像标准的”jar”任务一样,可以通过”zipfileset”元素来包含其它jar包。但是仅仅包含其它jar包并不能让你远离“jar包陷阱”,因为你所依赖的jar包中的类名还是没有改变,仍然有可能和其它版本的jar包里的类名相同,产生冲突。

为了重命名类名,JarJarTask引入了一个新元素”rule”。”rule”包含了”pattern”属性,你可以通过这个属性,使用通配符来选择哪些类需要重命名,通过”result”属性可以设置如何给选中的类重命名。

在本例中我们希望引入一个叫jaxen.jar的库。并将所有以”org.jaxen”开头的类重命名以”org.example.jaxen”开头:


<target name="jar" depends="compile">
    <taskdef name="jarjar" classname="com.tonicsystems.jarjar.JarJarTask"
        classpath="lib/jarjar.jar"/>
    <jarjar jarfile="dist/example.jar">
        <fileset dir="build/main"/>
        <zipfileset src="lib/jaxen.jar"/>
        <rule pattern="org.jaxen.**" result="org.example.@1"/>
    </jarjar>
</target>

通配符**表示匹配循环所有的子包,如果你只希望匹配一个子包的话,可以使用*。

@1表示第一个**所匹配到的内容,一次类推,@2表示从左到右第二个所匹配到的*或**。@0是特殊的标志,它代表整个匹配到的类的全名。

命令行下单独使用jar

java -jar jarjar.jar [help]

打印帮助信息。

java -jar jarjar.jar strings

打印类路径classpath下的字符串信息,如果类中有debug信息的话,会打印出所在行的行号。

比如java -jar jarjar.jar strings servlet-api.jar会打印:

...
javax.servlet.Http.httpservletRequest
"BASIC"
"FORM"
"CLIENT_CERT"
"DIGEST"
javax.servlet.http.HttpUtils
"javax.servlet.http.LocalStrings"
88: "javax.servlet.http.LocalStrings"
339: "://"
341: "http"
341: "https"
145: "&amp;"
238: "err.io.short_read"
254: "8859_1"
...

java -jar jarjar.jar find []

打印出类路径下java类对类路径下类的依赖,如果省略了,那么用代替。只能取class或者jar,前者代表打印各个类之间的依赖情况,后者会打印包对包之间的依赖。

java -jar jarjar.jar process

将按照文件所指定的方法转换到里,中原有的类将被删除。

文件的写法下面将会提到。

类路径Classpath的格式

类路径classpath是用逗号或分号(具体是那种分隔符依赖操作系统)隔开的一组目录,jar包或者zip包。详细说明请看classpath的java doc。也可以使用通配符的方式来书写classpath:http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6268383。

Rules规则文件格式

Rules规则文件是实际上一种文本文件,每一行代表一条规则Rule,行首和行末的空格会被忽略掉,有三种不同样式的Rule写法:


rule <pattern> <result>
zap <pattern>
keep <pattern>

第一个是用来设置jar如何重命名类文件的。所有类,只要它引用到了需要改变名字的类,其相关内容就会被自动同步改变,保证不会出现引用错误。如果一个类匹配了不同的rule,只有第一个匹配的rule会生效。 和的设定同上面讲过的Ant中一样。

zap规则中 所匹配的类将会不加入生成的新jar包。

到此这篇关于Java打包工具jar包详解的文章就介绍到这了,更多相关Java打包工具jar包内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java打包工具jar包详解

本文链接: https://lsjlt.com/news/155372.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java打包工具jar包详解
    Java打包工具是Java开发工具中比较常用的一种,代码重新打包工具jarjar可以帮助你将其它用到的java库打包并嵌入到你自己的项目jar包中。这样做的原因有: 当你发布项目的时...
    99+
    2024-04-02
  • Java之Maven工程打包jar
    目录1.一般的jar(不能运行)方式1:命令行方式方式2:鼠标操作2.可执行Jar方式1:SpringBoot框架 (依赖在jar中)方式2: 依赖包和项目包分离(依赖在外部目录li...
    99+
    2023-05-14
    Java Maven工程打包jar Maven工程打包jar
  • jar命令打包java应用和java打jar包的几种方式详解
    一、Jar命令打包java应用的用法 jar是标准的java打包命令,位于JAVA_HOME/bin/目录下面。主要功能是将多个文件打包成一个单独的jar文件。 创建jar文件 jar c[v0Mmfe] [manifest] [jar...
    99+
    2023-09-06
    java 开发语言
  • jar包反编译工具(java-decompiler)
    五种反编译工具 1.jd-gui 下载地址:http://java-decompiler.github.io/ 优点:反编译的源代码基本符合,没有乱七八糟新增的修饰符 缺点:反编译过程耗时较长(50MB需要10分钟左右)       ...
    99+
    2023-08-31
    jar java
  • Android rom解包打包工具
    eMMC主要是针对手机和平板电脑等产品的内嵌式存储器,由于其在封装中集成了一个控制器,且提供标准接口并管理闪存等优势,越来越受到Android手机厂商的青睐,以eMMC为存储...
    99+
    2022-06-06
    工具 rom Android
  • Unity AssetBundle打包工具示例详解
    目录Unity批量打AB包1.PathTool2.CreateAB3.ClearABLable4.拓展Unity批量打AB包 为了资源热更新,Unity支持将所有资源打包成Asset...
    99+
    2024-04-02
  • java中如何打包成jar包
    一、手动打包可直接执行的jar包1)先使用javac编译java文件,得到class文件;2)新建文件,名字任起,比如可以叫manifest,内容如下(注意:1. 冒号后面加一个空格,2. 最后必须回车到新的空行,否则出错,如下面内容就必须...
    99+
    2022-02-12
    java基础 java 打包 jar包
  • 图文详解Maven工程打jar包的N种方式
    目录一、IDEA自带打包插件二、maven插件打包2.1 制作瘦包(直接打包,不打包依赖包)2.2 制作瘦包和依赖包(相互分离)2.3 制作胖包(项目依赖包和项目打为一个包)2.4 ...
    99+
    2024-04-02
  • Java中Maven的打包方式和执行jar详解
    目录Maven的打包方式和执行jar1. Jar1.1 Pom.xml1.2 Run 1.3 自动执行方法2. Assembl1y2.1 Pom.xml2.2 Run&nb...
    99+
    2023-05-18
    Maven打包方式 jar执行
  • Java打包Jar包后使用脚本执行
    打包jar包的应用场景: 有时候,我们需要将一个java工程,放在服务器上让它执行。我们知道在IDE中,都是人为操作,执行这个程序。但是如果没有IDE环境,那么怎么执行Java工程呢...
    99+
    2024-04-02
  • IDEA中打jar包的2种方式(Maven打jar包)
    前言 在讲这两种方式之前,我们先来说明一下什么是java中的jar文件 jar (Java Archive File),翻译过来就是java的档案文件,它其实也类似于我们window...
    99+
    2024-04-02
  • Linux打包和压缩工具的使用详解
    压缩工具:gzip,bzip2 压缩能力逐渐增强 打包或压缩工具:tar 打包并压缩工具:zip 压缩能力比gzip和bzip2都强 gzip和bzip2这两种压缩工具的区别: gzip和bzip2只能压缩文件,zi...
    99+
    2022-06-04
    linux文件压缩与打包 Linux下打包与压缩 Linux打包和压缩工具
  • 详解node中的包和包管理工具
    包从哪里来的?不同于 Node.js 中的内置模块与自定义模块,包是由第三方个人或团队开发出来的,免费供所有人使用。 在这里记笔记:免费的!!!为什么我们要用包?由于 Node.js 的内置模块仅提供了一些底层的 API,导致在基于内置模块...
    99+
    2022-11-24
    node Node.js
  • IDEA打成JAR包
    一、场景需求 ​ 当我们需要将Java项目文件转为exe文件时,需要首先将Java项目文件打包成jar文件。这里我们以常用的Java开发IDE-IDEA为例,讲解打包jar文件的具体步骤。 二、具体步骤 在项目代码功能都测试无误后,接下来进...
    99+
    2023-08-18
    java intellij-idea jar
  • Java之Maven工程打包jar的方法是什么
    这篇文章主要介绍“Java之Maven工程打包jar的方法是什么”,在日常操作中,相信很多人在Java之Maven工程打包jar的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java之Maven工...
    99+
    2023-07-05
  • Java打包工具到底该选哪个?
    Java作为一门跨平台的编程语言,其编写的程序可以在不同的操作系统上运行。但是,不同的操作系统对于Java程序的运行环境和依赖库的要求不同,因此,在发布Java程序时,需要将所有的依赖库打包成一个可执行的文件,以方便用户安装和使用。 Ja...
    99+
    2023-08-24
    异步编程 打包 numy
  • Java中的打包工具有哪些?如何选择最适合自己的打包工具?
    Java是一门广泛使用的编程语言,应用范围涉及到桌面应用程序、Web应用程序、移动应用程序等多个领域。在Java开发中,打包工具是不可或缺的一部分。本文将介绍Java中的打包工具有哪些,以及如何选择最适合自己的打包工具。 一、Java中的打...
    99+
    2023-09-13
    日志 数据类型 打包
  • 怎么将java或javaweb项目打包为jar包或war包
    这篇文章主要介绍“怎么将java或javaweb项目打包为jar包或war包”,在日常操作中,相信很多人在怎么将java或javaweb项目打包为jar包或war包问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答...
    99+
    2023-07-02
  • 如何将java或javaweb项目打包为jar包或war包
    目录一、为什么打包二、如何打包1、打成jar包1.1、使用jar手动打包1. 2、使用IDEA进行打包2、打成war包一、为什么打包 关于此问题,网上众说纷纭。结合个人理解以及网上说...
    99+
    2024-04-02
  • springboot打包实现项目JAR包和依赖JAR包分离
    目录写在前面的默认的maven配置解决方案assembly配置maven中的配置最终打包后的效果写在前面的 当我们使用spring boot写项目时,一般都会遇到一个问题,那就是sp...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作