IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> ?一篇文章教会你在IDEA中玩转 JAR 包,并构建属于你自己的库? -> 正文阅读

[Java知识库]?一篇文章教会你在IDEA中玩转 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
执行效果如下:
mvn clean package

2. 或者直接用 plugin 工具 package

利用插件更方便,不过要引入插件对应的依赖

<plugins>
<plugin>
  <artifactId>maven-resources-plugin</artifactId>
  <version>3.0.2</version>
</plugin>
<plugin>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>3.8.0</version>
</plugin>
<plugin>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>2.22.1</version>
</plugin>
<plugin>
  <artifactId>maven-jar-plugin</artifactId>
  <version>3.0.2</version>
</plugin>
</plugins>

插件方式

3. 构建完成的效果

两种方式最终的效果一样
打包完成后的 JAR 包位置如下图:
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 页面

Project Structure

2. 开始创建

创建 JAR 包

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

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

  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 下

Libraries

2. 选中自己的 JAR 包

添加自己的 JAR 包

3. 选中要添加到的模块

模块

4. Apply 完成 JAR 包添加

Apply

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

成功运行:
导入 JAR 包的测试结果

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) ??

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-09-12 13:02:20  更:2021-09-12 13:02:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 17:17:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码