手动打包输出后端jar

1、目标

输出可以依赖指定路径的jar包,并能读取jar包外的配置文件的后端包

2、方式1

2.1 操作

2.2.1、右击后端项目,选择“Export”,选择“Runnable JAR file”。

这里写图片描述

2.2.2、选中第三种输出方式,输出jar。

这里写图片描述

2.2.3、输出的文件为运行jar和其依赖jar包。使用压缩工具打开运行jar“business.jar”,将根目录的配置文件删除。

这里写图片描述

这里写图片描述

2.2.4、将运行jar、依赖包和删除的配置文件放入同一级目录中。

这里写图片描述

2.2.5、输入命令运行。

1
java -jar business.jar

2.2、备注

该方法可以避免依赖的jar包环境配置问题,以及通过classpath获取的配置文件的路径问题。

2.3、原理

运行jar包中META-INF/MANIFEST.MF是关键。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Manifest-Version: 1.0
Class-Path: . business_lib/mchange-commons-java-0.2.10.jar business_li
b/c3p0-0.9.5.1.jar business_lib/commons-logging.jar business_lib/comm
ons-pool2-2.4.2.jar business_lib/junit-4.12.jar business_lib/libthrif
t-0.9.1.jar business_lib/log4j-1.2.17.jar business_lib/mybatis-3.2.8.
jar business_lib/mybatis-paginator-1.2.17.jar business_lib/mybatis-sp
ring-1.2.2.jar business_lib/mysql-connector-java-5.1.32.jar business_
lib/objenesis-2.1.jar business_lib/slf4j-api-1.6.6.jar business_lib/s
lf4j-log4j12-1.6.6.jar business_lib/spring-aop-4.1.3.RELEASE.jar busi
ness_lib/spring-beans-4.1.3.RELEASE.jar business_lib/spring-context-4
.1.3.RELEASE.jar business_lib/spring-core-4.1.3.RELEASE.jar business_
lib/spring-expression-4.1.3.RELEASE.jar business_lib/spring-jdbc-4.1.
3.RELEASE.jar business_lib/spring-test-4.0.4.RELEASE.jar business_lib
/spring-test.jar business_lib/spring-tx-4.1.3.RELEASE.jar business_li
b/hamcrest-core-1.3.jar business_lib/aopalliance-1.0.jar business_lib
/gson-2.8.0.jar business_lib/commons-lang3-3.3.2.jar business_lib/txr
edis.jar business_lib/jedis-2.9.0.jar business_lib/ini4j-0.5.4.jar bu
siness_lib/txini-1.0.jar business_lib/cglib-nodep-2.1_3.jar business_
lib/rpc.jar business_lib/protocol-1.0.18.jar
Main-Class: wxtx.sms.com.domain.TXServerMain

其中,Class-Path下的路径为设置为当前java项目运行的classpath。
“.”的所用为使当前路径的文件设置入classpath,因此根目录的配置文件可以被jar通过classpath获取。

3、方式2(推荐)

3.1、操作

3.3.1、将项目输出为普通jar包,但不要包含配置文件。
3.3.2、jar包和项目配置文件的结构如下图(当前路径即为项目的classpath),其中项目本身输出的jar包和其依赖包均放在文件夹lib下。

这里写图片描述

3.3.3、输入命令启动项目(wxtx.sms.com.domain.TXServerMain为项目启动入口主类)。

1
java -classpath "lib/*:." wxtx.sms.com.domain.TXServerMain