什么是Jar
自己创建jar包,让别人来用:
- 创建Java项目
- 创建实现了特定功能的类
- 将项目生成为jar包
- 将jar包发布出去,给别人使用
创建项目和验证
创建项目
创建项目名为dateUtil的project项目
或者:
项目 dateUtil 创建完成
创建包和类
相应的代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
package com.dongyuan.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**日期转换工具类
* @author: XYT
* @create-date: 2022/7/26 15:12
*/
public class DateConvertUtil {
/** 注释方法:/**+回车键 形参会被自动提取出来并加粗描黑。这就是为什么引用系统方法的时候,会有很多的说明
* 将字符串转为日期,默认格式为yyyy-MM-dd
* @param strDate 字符串日期
* @return 返回转换的日期
*/
public static Date getDate(String strDate){ //一个参数;对下方方法的一种封装;这种方式叫“语法糖”;
return getDate(strDate,"yyyy-MM-dd"); //格式是默认的 getDate
}
/**
* 将字符串转为日期类型
* @param strDate 字符串日期
* @param format 转换格式
* @return 返回转换的日期,转换失败返回null
*/
public static Date getDate(String strDate, String format){ //两个参数
SimpleDateFormat sdf=new SimpleDateFormat(format); //格式需要自己指定(设置)
// try { //自动生成try-catch
// return sdf.parse(strDate);
// } catch (ParseException e) {
// throw new RuntimeException(e);
// }
// }
try { //课堂代码try-catch
return sdf.parse(strDate); //注意:parse
} catch (ParseException e) {
e.printStackTrace(); //这里不一样
}
return null;
}
/**
* 将日期转为字符串,固定格式为yyyy-MM-dd
* @param date 日期
* @return 返回转换的字符串
*/
public static String getDate(Date date){
return getDate(date,"yyyy-MM-dd"); //格式是默认的 getDate
}
/**
* 将日期转为字符串
* date 日期
* format 格式字符串
* 返回转换后的字符串
*/
public static String getDate(Date date,String format){ //两个参数
SimpleDateFormat sdf=new SimpleDateFormat(format); //格式需要自己指定(设置)
return sdf.format(date); //注意:format
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
package com.dongyuan.util;
/**
* @author: XYT
* @create-date: 2022/7/26 16:02
*/
public class StringUtils {
/**
* 判断字符串是否为空
* @param str
* @return
*/
public static boolean isNullOrEmpty(String str){
return str==null || str.isEmpty(); //注意 ==
}
}
|
验证代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
package com.dongyuan.test;
import com.aaa.util.DateConvertUtil;
import java.util.Date;
/**
* @author: XYT
* @create-date: 2022/7/26 16:08
*/
public class Test { //测试
public static void main(String[] args) {
//日期转为字符串
System.out.println(DateConvertUtil.getDate(new Date()));
//日期转为固定格式的字符串
System.out.println(DateConvertUtil.getDate(new Date(),"yyyy-MM-dd HH:mm:ss"));
}
}
|
验证结果
打包和引用
选择 File 中的 Project Structure。
Project 左侧工具栏的功能
介绍 Project Structure 的工具栏及具体功能:
打 jar 包
复制生成的 jar 包到桌面,然后用解压工具打开:
导入生成的 jar 包
验证 jar 包导入 / 应用的正确性
maven项目如何使用jar包
前言
maven作为包管理工具,好处不必多说
但是有些情况,比如需要引入第三方包,如快递鸟,支付宝,微信等jar包(当然有可能直接提供maven依赖)
如果直接下载到本地之后,怎么整合到自己的maven工程呢?
下面列举五种方式
-
上传到maven中心仓库
https://oss.sonatype.org/
愿意折腾可也搞搞,可以参考 如何发布Jar包到Maven中央仓库(确实比较麻烦)
如这是我手动上传到maven中央仓库的jar包 https://mvnrepository.com/search?q=chendahai
优点:可以直接在pom.xml中引入,打包部署没有问题
缺点:上传复杂,麻烦(创建工单,生成秘钥等等
- 搭建maven私服
手动在后台管理页面上传,之后pom.xml引入
上传方式查看 maven私服nexus上传第三方jar包以及下载
优点:下载速度快,maven聚合项目更适用,内部适用deploy即可,打包部署没有问题
缺点:相比第一种还要麻烦些,还占用本地服务器资源
- 传统方式java SE的套路
新建lib包,之后导入(eclipse直接build path)(idea麻烦些:File→project structure→libraries→+jar包)
优点:简单,不用做额外的配置
缺点:协作开发,多人都需做同样的操作,沟通也是一回事
- pom文件scope的system属性
优点:配置后之后直接引入,maven reImport即可
缺点:没啥缺点,就是配置者得费些时间
案例
要引入如下dateUtil.jar
操作
自定义目录,这里在project的根目录新建lib文件夹,将jar放进去
pom.xml中引入
1
2
3
4
5
6
7
|
<dependency>
<groupId>dingding</groupId>
<artifactId>dingding</artifactId>
<version>2.8</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/dateUtil.jar</systemPath>
</dependency>
|
注意:
groupId:自定义
artifactId:自定义
version:自定义
scope:必须是system
systemPath:jar包的路径(idea编写的时候会有提示的)
通过上述方式,在开发环境没有什么问题,不会存在什么包找不到等情况
但是,maven project部署一般打包发布,所以打包是需要额外配置的(上述的第一二中方式不需要做额外处理)
处理打包
打包的时候需要做如下配置,需要通过resource标签引入,位置build→resources→resource
1
2
3
4
5
6
7
8
9
10
11
|
<build>
<resources>
<resource>
<directory>lib</directory>
<targetPath>/BOOT-INF/lib/</targetPath>
<includes>
<include>**/*.jar</include>
</includes>
</resource>
</resources>
</build>
|
directory:指定lib文件夹的位置,由于是相对工程根目录,所以直接写上lib即可
targetPath:打包到的文件夹位置,写上BOOT-INF/lib即可,或者是WEB-INF/lib。【斜杠(/)加不加都行,如果是mac的话写./】
includes:一般都是以jar结尾,就写**/*.jar
较为完整的pom.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<dependency>
<groupId>dingding</groupId>
<artifactId>dingding</artifactId>
<version>2.8</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/taobao-sdk-java-auto_1479188381469-20190628.jar</systemPath>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>lib</directory>
<targetPath>/BOOT-INF/lib/</targetPath>
<includes>
<include>**/*.jar</include>
</includes>
</resource>
</resources>
|
ok,mvn package即可。
- 本地安装Jar包
在本地maven仓库安装本地jar包
maven install可以把指定的文件安装到本地maven仓库(使用maven指令前需要安装apache maven)。有三种install方式:
(1)mvn install:install-file -Dfile= -DgroupId= -DartifactId= -Dversion= -Dpackaging=
指定jar包、groupid、artifactId和version,maven会自动生成相应的pom.xml文件。
(2)mvn install:install-file -Dfile= -DpomFile=
如果jar包是用maven打包生成的,可以直接指定jar包和pom.xml文件。
(3)mvn install:install-file -Dfile=
如果jar包是用maven打包生成的,maven 2.5版本会自动根据jar包生成pom.xml文件。
安装成功后,在.m2/repository文件夹里可以看到jar包和pom.xml文件。
添加依赖
1
2
3
4
5
|
<dependency>
<groupId>dateUtil</groupId>
<artifactId>dateUtil</artifactId>
<version>1.0.0</version>
</dependency>
|