文章目录
- 前言
- 0. 版本
- 1. 什么是jar包?
- 2. jar包的作用
- 1. 实现代码重用
- 2. 方便进行文件传输
- 3. 可移植性
- 4. 安全
- 5. 包封装
- 3. 制作jar包的两种形式
- 一、maven 创建JAR 包
- 1. 利用 maven 构建自己的 Java 项目
- 2. 编写自己的工具类
- 3. 开始创建 JAR 包
- 1. 利用 IDEA 内嵌的 Terminal
- 2. 或者直接用 plugin 工具 package
- 3. 构建完成的效果
- 4. JAR 包的树结构和清单文件的内容
- 二、不依靠 maven 创建 JAR 包
- 0. 依然用 maven 下的 Java 项目进行构建
- 1. 进入Project Structure 页面
- 2. 开始创建
- 3. 指定程序入口
- 4. Apply 完成操作
- 5. 注意:经过上面的步骤还并没有真正构建 JAR 包,还得走下面的步骤
- 6. 完成构建
- 7. 构建完成的效果
- 8. JAR 包的树结构和清单文件的内容
- 三、关于使用哪种方法的总结
- 4. 使用你自己构建的 JAR 包
- 1. 进入 Project Structure,Libraries 下
- 2. 选中自己的 JAR 包
- 3. 选中要添加到的模块
- 4. Apply 完成 JAR 包添加
- 4. 添加后的效果
- 5. 我的测试程序
- 6. 我的测试效果
- 5. 移除 JAR 包
前言
本文讲解在 IDEA 中构建,使用和移除 JAR 包,初步告诉你如何构建自己的 Java 类库,通过细致的保姆教程让小白也能轻松上手,并且文章下方给出了其他有关 JAR 的优秀文章链接,为读者提供深入了解 JAR 包 以及 设计并构建属于自己的类库的途径。1
0. 版本
IDE:IntelliJ IDEA 2020.1
maven:apache-maven-3.8.1
platform:JDK11
language level(向下兼容的最低版本):JDK8
1. 什么是jar包?
JAR 全称:Java Archive File,意思就是 Java 档案文件,本质上 JAR 包是一种 ZIP 压缩文件,因而我们可以用 Windows 下的 WinRAR,WinZip 等压缩工具进行解压缩。不过相较于普通的 ZIP 文件,JAR 包不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并可被编译器和 JVM 等工具直接使用。像我们平时的Java开发中就经常引入各种 JAR 包依赖和组件。2
2. jar包的作用
了解了 JAR 包的基本知识,对其作用的了解也是必要的。通常来说 JAR 包有下面多种好处:
1. 实现代码重用
重复造轮子是没有意义的,我想没有任何一个人愿意对一种功能进行反复编写,那么这时将自己积累的各种工具类打包成 JAR 类库供日后使用将是一个不错的选择。
2. 方便进行文件传输
由于 JAR 包属于一种压缩格式,相较于下载对应的源文件,下载被压缩过的文件固然是一种更好的方式,另外 JAR 包将许多类文件和资源文件(文本,图片等)聚合打包,这样就不需要我们对一个个资源进行下载了。
3. 可移植性
JAR 包作为内嵌在 Java 平台内部处理的标准,能够在各种平台上直接使用。3
4. 安全
能够对 JAR 文件进行数字签名,只让能够识别数字签名的用户使用里面的东西
5. 包封装
能够让 JAR 包里面的文件依赖于同一版本的类文件。
3. 制作jar包的两种形式
一、maven 创建JAR 包
1. 利用 maven 构建自己的 Java 项目
2. 编写自己的工具类
package binarysearch;
import java.util.Arrays;
public class BinarySearch {
/**
* 在这里写上方法的文档说明
*/
public int search(int[] nums, int target) {
int len = nums.length;
Arrays.sort(nums);
// 二分查找
int l = 0, r = len-1;
while (l <= r){
int mid = (l+r) >> 1; // 同等 (l+r)/2
if (target < nums[mid]){
r = mid-1;
}else if (target > nums[mid]){
l = mid+1;
}else{
return mid;
}
}
return -1;
}
}
3. 开始创建 JAR 包
1. 利用 IDEA 内嵌的 Terminal
操作:
Alt + F2 -》 确保当前路径为项目路径 -》 输入命令: mvn clean package4
执行效果如下:
2. 或者直接用 plugin 工具 package
利用插件更方便
3. 构建完成的效果
两种方式最终的效果一样
打包完成后的 JAR 包位置如下图:
4. JAR 包的树结构和清单文件的内容
E:\MAVEN\JARTEST\TARGET\JARTEST-1.0-SNAPSHOT
├─cn
│ └─edu
│ └─huas
│ └─st
│ └─flameking
│ BinarySearch.class
│
└─META-INF
│ MANIFEST.MF
│
└─maven
└─cn.edu.huas.st.flameking
└─jarTest
pom.properties
pom.xml
MANIFEST.MF:
5
Manifest-Version: 1.0
Created-By: Apache Maven 3.8.1
Built-By: flameking
Build-Jdk: 11.0.6
pom.properties:
#Created by Apache Maven 3.8.1
groupId=cn.edu.huas.st.flameking
artifactId=jarTest
version=1.0-SNAPSHOT
二、不依靠 maven 创建 JAR 包
0. 依然用 maven 下的 Java 项目进行构建
1. 进入Project Structure 页面
2. 开始创建
3. 指定程序入口
4. Apply 完成操作
5. 注意:经过上面的步骤还并没有真正构建 JAR 包,还得走下面的步骤
6. 完成构建
7. 构建完成的效果
8. JAR 包的树结构和清单文件的内容
E:\MAVEN\JARTEST\OUT\ARTIFACTS\JARTEST_JAR\JARTEST
└─cn
└─edu
└─huas
└─st
└─flameking
BinarySearch.class
MANIFEST.MF:
Manifest-Version: 1.0
Main-Class: cn.edu.huas.st.flameking.BinarySearchTest
三、关于使用哪种方法的总结
- 两种方式均需以一个项目或模块为单位进行 JAR 包的构建,当然如果直接在命令行窗口通过命令构建可以指定要打包的类文件,本文不做详细解释6
- 不依赖 maven 构建的 JAR 没有包含 MANIFEST.MF 文件,但是经我试验它依然可以使用
- 两种方式相比,在 maven 的管理下,JAR 包的构建显然更加简单
- 在 maven 的管理下,JAR 包的更新也将更加简单毕竟构建的方式非常简单,每次更新过后,在执行一遍构建时的操作即可,与此相比,没有 maven 的加持下我们必须重新构建一个新的 JAR 包,同时还得更新替换所有依赖了原版本的项目。
- 依据个人习惯,我平时一般利用 maven 管理构建项目,所以我更加偏向于使用 maven 提供的工具构建 JAR,读者可酌情选择。
4. 使用你自己构建的 JAR 包
那么在另一个项目我们该如何使用自己的 JAR 包呢?
1. 进入 Project Structure,Libraries 下
2. 选中自己的 JAR 包
3. 选中要添加到的模块
4. Apply 完成 JAR 包添加
4. 添加后的效果
5. 我的测试程序
package cn.edu.huas.st.flameking;
// 导入 BinarySearch.class 所在的包
import cn.edu.huas.st.flameking.BinarySearch;
public class JarTest {
public static void main(String[] args) {
int[] nums = {43,15,20,41,11,17,14};
BinarySearch binarySearch = new BinarySearch();
int index = binarySearch.search(nums, 11);
for(int i : nums){
System.out.printf("%d ", i);
}
System.out.println("目标的下标:" + index);
}
}
6. 我的测试效果
成功运行:
5. 移除 JAR 包
1. 构建你自己的 Java 库 ↩︎
2. JAR 包细节知识点
(https://mp.weixin.qq.com/s?__biz=MzI3ODc3NzQ4NQ==&mid=2247484812&idx=1&sn=ea724af133b29125f6b23f0a9d860aec) ↩︎3. 疯狂 Java 讲义(第二版)李刚编著 ↩︎
4. Maven 构建和测试
(https://www.runoob.com/maven/maven-build-test-project.html) ↩︎5. 认识 JAR 包
(https://mp.weixin.qq.com/s?__biz=MzIxMTI0NzcyMQ==&mid=2650932784&idx=1&sn=d8d8d5df53aa48de7f6e4b840fc45bc4) ↩︎6. 命令行操作 JAR 文件(https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jar.html) ↩︎