您的位置:首页 > 编程语言 > Java开发

Springboot 打包 外部jar system

2017-07-24 00:00 330 查看

参考:http://www.cnblogs.com/liuchuanfeng/p/6886045.html

http://www.cnblogs.com/xiaosiyuan/p/6894766.html

一、Maven添加本地Jar包

我们有时候项目依赖外部的jar,我们使用Eclipse开发的时候我们直接通过build path添加jar就可以,但是使用mvn 打包的时候就会缺少这个包。

1. 使用system scope

我们直接引入rabbitmq-client.jar。这个方式比较灵活,到新的服务器上,无需做额外的操作。

<dependency>
<groupId>rabbitmq.client</groupId>
<artifactId>rabbitmq.client</artifactId>
<version>3.0</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/WEB-INF/lib/rabbitmq-client.jar</systemPath>
</dependency>


groupId和artifactId以及version都是可以随便填写的 ,scope必须填写为system,而systemPath我们现在我们jar包的目录地址就可以了

${basedir}就是项目根目录

2. 将jar包安装到本地repository中

这个需要在新机器上执行mvn install:install-file命令。

mvn install:install-file

-Dfile= jar文件所存放的地址

-DgroupId= jar文件所属的group:包名

-DartifactId= jar的项目名 名称,一般就是去掉后缀的文件名

-Dversion=版本号

-Dpackaging=jar:此包的打包形式,就是jar

-DgeneratePom=true

例如执行命令:
mvn install:install-file -Dfile=D:\JAR_LIB\rabbitmq-client.jar -DgroupId=com.rabbitmq -DartifactId=client -Dversion=3.5.0 -Dpackaging=jar -DgeneratePom=true -DcreateChecksum=true

在项目中引用:

<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>client</artifactId>
<version>3.5.0</version>
</dependency>


二、Eclipse开发没问题但是SpringBoot打包,打不进去

通过方式一

通过这种方式引入依赖后,在编码的时候没有问题,但是用mvn clean package打成jar包后运行就是报错,正式找不到这些jar包中的相关类。把jar包解压后在BOOT-INF/lib里面也确实没有发现用上述方式引入的jar包,看来是没有把src/lib目录里面的jar打进去,后来通过查找也终于找到方法了,修改pom文件,在build标签下增加如下配置:

<resources>
<resource>
<directory>src/lib</directory>
<targetPath>BOOT-INF/lib/</targetPath>
<includes>
<include>**/*.jar</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<targetPath>BOOT-INF/classes/</targetPath>
</resource>
</resources>

目的就是把src/lib下的jar打到BOOT-INF/lib下,但是必须要增加第二个resource,不然src/main/resources下的配置文件又打不进jar包了。

如果要打成war包,则pom文件需要这样改:

<!--设置maven-war-plugins插件,否则外部依赖无法打进war包-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webResources>
<resource>
<directory>lib</directory>
<targetPath>WEB-INF/lib/</targetPath>
<includes>
<include>**/*.jar</include>
</includes>
</resource>
</webResources>
</configuration>
</plugin>

通过方式二

这种方式不会有以上问题,但是却要每台电脑都要运行命令,也是头疼。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: