文章目录

  • 前言
  • 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

执行效果如下:

idea Java后台引用supermap api jar包 idea中引入jar包_jar

2. 或者直接用 plugin 工具 package

利用插件更方便

idea Java后台引用supermap api jar包 idea中引入jar包_maven_02

3. 构建完成的效果

两种方式最终的效果一样

打包完成后的 JAR 包位置如下图:

idea Java后台引用supermap api jar包 idea中引入jar包_maven_03

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 页面

idea Java后台引用supermap api jar包 idea中引入jar包_java_04

2. 开始创建

idea Java后台引用supermap api jar包 idea中引入jar包_maven_05

3. 指定程序入口

idea Java后台引用supermap api jar包 idea中引入jar包_Java_06

4. Apply 完成操作

idea Java后台引用supermap api jar包 idea中引入jar包_maven_07

5. 注意:经过上面的步骤还并没有真正构建 JAR 包,还得走下面的步骤

idea Java后台引用supermap api jar包 idea中引入jar包_java_08

6. 完成构建

idea Java后台引用supermap api jar包 idea中引入jar包_jar_09

7. 构建完成的效果

idea Java后台引用supermap api jar包 idea中引入jar包_intellij idea_10

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

三、关于使用哪种方法的总结

  1. 两种方式均需以一个项目或模块为单位进行 JAR 包的构建,当然如果直接在命令行窗口通过命令构建可以指定要打包的类文件,本文不做详细解释6
  2. 不依赖 maven 构建的 JAR 没有包含 MANIFEST.MF 文件,但是经我试验它依然可以使用
  3. 两种方式相比,在 maven 的管理下,JAR 包的构建显然更加简单
  4. 在 maven 的管理下,JAR 包的更新也将更加简单毕竟构建的方式非常简单,每次更新过后,在执行一遍构建时的操作即可,与此相比,没有 maven 的加持下我们必须重新构建一个新的 JAR 包,同时还得更新替换所有依赖了原版本的项目。
  5. 依据个人习惯,我平时一般利用 maven 管理构建项目,所以我更加偏向于使用 maven 提供的工具构建 JAR,读者可酌情选择。

4. 使用你自己构建的 JAR 包

那么在另一个项目我们该如何使用自己的 JAR 包呢?

1. 进入 Project Structure,Libraries 下

idea Java后台引用supermap api jar包 idea中引入jar包_maven_11

2. 选中自己的 JAR 包

idea Java后台引用supermap api jar包 idea中引入jar包_jar_12

3. 选中要添加到的模块

idea Java后台引用supermap api jar包 idea中引入jar包_maven_13

4. Apply 完成 JAR 包添加

idea Java后台引用supermap api jar包 idea中引入jar包_jar_14

4. 添加后的效果

idea Java后台引用supermap api jar包 idea中引入jar包_intellij idea_15

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. 我的测试效果

成功运行:

idea Java后台引用supermap api jar包 idea中引入jar包_intellij idea_16

5. 移除 JAR 包

idea Java后台引用supermap api jar包 idea中引入jar包_maven_17


    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) ↩︎