Java - 获取 Jar 包内的 pom.xml 文件

目录

一.引言

二.通过 jar 命令

◆ 查看 Jar 包内文件

◆ 导出 Pom.xml

◆ 导出 Jar 包内文件

三.通过 unzip 命令

◆ 导出 Jar 包内文件

四.总结


一.引言

引用其他同学的 Jar 包时,需要获取其对应 jar 包内的 pom.xml 文件检查版本依赖关系,下面介绍两种直接读取 jar 包获取文件的方法。

二.通过 jar 命令

◆ 查看 Jar 包内文件

想要获取 jar 内的 pom.xml 文件,需要先确认是否存在该 xml,使用 jar tf xx.jar 命令查看 jar 内全部文件:

jar tf your-artifact.jar | grep pom.xml

◆ 导出 Pom.xml

通过 grep pom.xml 会得到多个项目内的 pom.xml,我们根据 artifactId 找到自己项目的 pom.xml 然后执行下述命令:

jar xf your-artifact.jar META-INF/maven/<groupId>/<artifactId>/pom.xml

这里 <groupId> 与 <artifactId> 根据上面 grep 得到的内容填写即可,无需指定版本,要是有多个版本可能就要 NoSuchMethod 了。执行后在当前目录会生成 META-INF 的文件夹,向下一层一层检索即可得到对应的 pom.xml 文件了。

◆ 导出 Jar 包内文件

除了 pom.xml 外,jar 包内的文件其实都可以导出,只要按照 xf 得到的内容路径替换上面的命令即可,不过这里不能得到原生的 .java 和 .scala 文件,只可以获得编译后的 .class。

三.通过 unzip 命令

◆ 导出 Jar 包内文件

unzip your-artifact.jar org/ahocorasick/trie/PayloadTrie$1.class

执行命令后在当前文件夹可以得到 org/... 的嵌套文件夹,打开即可获取 jar 包内文件。 

四.总结

这个方法主要适用于别人提供给你 Jar 包,当时也有一些 Jar 包解析的工具和 App,如果想显式操作直接应用即可,例如 GD-GUI。对于得到的 .class 文件,也可以反编译获取内部的一些代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/581018.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MYSQL存储过程和存储函数-数据库实验五

Mysql数据库实验及练习题相关 MySQL 数据库和表的管理-数据库实验一 MySQL连接查询、索引、视图-数据库实验二、实验三 MySQL约束、触发器-数据库实验四 MYSQL存储过程和存储函数-数据库实验五 MySQL批量随机生成name、TEL、idNumber MYSQL数据库的安全管理-数据库实验六 MYSQ…

基于JetCache整合实现一级、二级缓存方案(方案实现)

目录 一、整体方案说明 1.1 需求说明 1.2 整体方案实现组件结构图 二、Caffeine缓存实现 2.1 组件说明 2.2 组件结构图 2.3 组件Maven依赖 2.4 组件功能实现源码 2.4.1 CaffeineCacheManager扩展实现 2.4.2 CaffeineConfiguration配置类实现 2.4.3 涉及其他组件的类 …

如何在Android Termux中使用SFTP实现远程传输文件

文章目录 1. 安装openSSH2. 安装cpolar3. 远程SFTP连接配置4. 远程SFTP访问5. 配置固定远程连接地址6、结语 SFTP&#xff08;SSH File Transfer Protocol&#xff09;是一种基于SSH&#xff08;Secure Shell&#xff09;安全协议的文件传输协议。与FTP协议相比&#xff0c;SFT…

Spring Boot 中的虚拟线程

在本文中&#xff0c;我将讨论 Spring Boot 中的虚拟线程。 什么是虚拟线程&#xff1f; 虚拟线程作为 Java 中的一项功能引入&#xff0c;旨在简化并发性。 Virtual threads 是 轻量级的线程&#xff0c;由 Java Virtual Machine 而不是操作系统管理。它们被设计为易于使用且…

npm run dev 生成network网址无法被同局域网下的其他主机访问

当使用 npm run dev 运行开发服务器时&#xff0c;通常该服务器只会监听本地主机&#xff08;localhost&#xff09;&#xff0c;这意味着只有在运行服务器的计算机上可以访问。如果你希望其他主机也能够访问该开发服务器&#xff0c;你可能需要配置服务器以监听所有可用的网络…

知识付费小程序如何搭建?

随着互联网的发展和人们对知识的渴求&#xff0c;知识付费行业正逐渐崭露头角。而其中&#xff0c;知识付费小程序因其便捷性、个性化等特点&#xff0c;成为了越来越多人的首选。那么&#xff0c;如何搭建一个知识付费小程序呢&#xff1f;本文将为你揭秘从零到一的全过程&…

for参数 命令语句 变量

for 参数f skip命令语句 命令说明&#xff1a; 跳过文本内容&#xff08;行&#xff09;&#xff1a;skip 例子&#xff1a; for /f "skip1" %%i in(2.txt) do echo %%i for 参数f eol命令语句 命令说明&#xff1a; 怱略指定字符的文本内容&#xff08;文本首部…

ElasticSearch:centos7安装elasticsearch7,kibana,ik中文分词器,云服务器安装elasticsearch

系统&#xff1a;centos7 elasticsearch: 7.17.16 安装目录&#xff1a;/usr/local 云服务器的安全组&#xff1a;开放 9200 和5601的端口 一、下载安装elasticsearch7.17.16 1、安装 #进入安装目录 cd /usr/local#下载elasticsearch wget https://artifacts.elastic.co/d…

Elasticsearch:在不停机的情况下优化 Elasticsearch Reindex

实现零停机、高效率和成功迁移更新的指南。更多阅读&#xff1a;Elasticsearch&#xff1a;如何轻松安全地对实时 Elasticsearch 索引 reindex 你的数据。 在使用 Elasticsearch 的时候&#xff0c;总会有需要修改索引映射的时候&#xff0c;遇到这种情况&#xff0c;我们只能做…

前端实现websocket类封装

随着Web应用程序的发展&#xff0c;越来越多的人开始利用Websocket技术来构建实时应用程序。Websocket是一种在客户端和服务器之间建立持久连接的协议。这种协议可以在一个单独的连接上实现双向通信。与HTTP请求-响应模型不同&#xff0c;Websocket允许服务器自主地向客户端发送…

想要学会JVM调优,先掌握JVM内存模型和JVM运行原理

1、前言 今天将和你一起探讨Java虚拟机&#xff08;JVM&#xff09;的性能调优。 JVM算是面试中的高频问题了&#xff0c;通常情况下总会有人问到&#xff1a;请你讲解下 JVM 的内存模型&#xff0c;JVM 的 性能调优做过&#xff1f; 2、为什么 JVM 在 Java 中如此重要 首…

ansible加密

本章主要介绍如何对ansible中的playbook 进行加密。 对整个playbook进行加密查看加密文件运行加密的playbook对playbook进行解密使用密码文件对单个字符串进行加密 前面写了许多playbook&#xff0c;这些playbook都是以明文的方式存在的&#xff0c;有时想对这些 playbook进…

利用网络教育系统构建个性化学习平台

在现代教育中&#xff0c;网络教育系统作为一种创新的学习方式&#xff0c;为学生提供了更加个性化和灵活的学习体验。在本文中&#xff0c;我们将通过简单的技术代码&#xff0c;演示如何构建一个基础的网络教育系统&#xff0c;为学生提供个性化的学习路径和资源。 1. 环境…

在Go语言中实现HTTP请求的缓存

大家好&#xff0c;我是你们可爱的编程小助手&#xff0c;今天我们要一起探讨如何使用Go语言实现HTTP请求的缓存。听起来是不是很酷&#xff1f;让我们开始吧&#xff01; 首先&#xff0c;我们要明白什么是缓存。简单来说&#xff0c;缓存就是将数据存储在内存中&#xff0c;…

从 WasmEdge 运行环境读写 Rust Wasm 应用的时序数据

WebAssembly (Wasm) 正在成为一个广受欢迎的编译目标&#xff0c;帮助开发者构建可迁移平台的应用。最近 Greptime 和 WasmEdge 协作&#xff0c;支持了在 WasmEdge 平台上的 Wasm 应用通过 MySQL 协议读写 GreptimeDB 中的时序数据。 什么是 WebAssembly WebAssembly 是一种…

Mysql中 distinct 和 group by 哪个效率高?

结论 先说结论 有索引的情况下&#xff1a;group by和distinct都能使用索引&#xff0c;效率相同 无索引的情况下&#xff1a;distinct效率高于group by。原因是distinct 和 group by都会进行分组操作&#xff0c;但group by可能会进行排序&#xff0c;触发filesort&#xff…

DevC++ easyx 从图片放缩理解双线性插值意义

很久就想实现的一个功能&#xff0c;图片能够拖动&#xff0c;图片能够通过视口局部显示&#xff0c;但是图片放大缩小还是解决。 于是心心念念半年过去了。 恰逢校园地图大作业&#xff0c;按意思来说是可视化&#xff0c;想着能不能改改代码&#xff0c;搓一个地图&#xf…

Flutter配置Android和IOS允许http访问

默认情况下&#xff0c;Android和IOS只支持对https的访问&#xff0c;如果需要访问不安全的连接&#xff0c;也就是http&#xff0c;需要做以下配置。 Android 在res目录下的xml目录中(如果不存在&#xff0c;先创建xml目录)&#xff0c;创建一个xml文件network_security_con…

Appium+python自动化(三)- SDK Manager(超详解)

简介 本来宏哥一开始打算用真机做的&#xff0c;所以在前边搭建环境时候就没有下载SDK&#xff0c;但是由于许多小伙伴通过博客发短消息给宏哥留言说是没有真机&#xff0c;所以顺应民意整理一下模拟器&#xff0c;毕竟“得民心者&#xff0c;得天下”。SDK顾名思义&#xff0c…

【Linux学习笔记】Linux下nginx环境搭建

1、下载nginx 安装rpm命令: rpm ivh nginx-release.rpm。(直接使用linux命令下载wget http://nginx.org/packages/rhel/6/noarch/RPMS/nginx-release-rhel-6-0.el6.ngx.noarch.rpm 2、设置nginx开机启动 chkconfig nginx on 3、开启nginx服务 方法一&#xff1a;service nginx…