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>
通过方式二
这种方式不会有以上问题,但是却要每台电脑都要运行命令,也是头疼。
相关文章推荐
- spring-boot打包,引入外部jar包问题
- spring-boot打包,引入外部jar包问题
- 【spring boot】6.idea下springboot打包成jar包和war包,并且可以在外部tomcat下运行访问到
- 【spring boot】6.idea下springboot打包成jar包和war包,并且可以在外部tomcat下运行访问到
- SpringBoot打war包并部署到外部tomcat运行(jar工程改造为正war工程)
- spring boot 打包成jar 包在发布到服务器上
- Spring Boot配置文件放在jar外部
- spring boot -- 打包jar,war(二)打成war包,mapper文件扫描不到
- spring boot 打包从jar转换成war
- Spring Boot 把配置文件和日志文件放到jar外部
- 打包SpringBoot -- 可执行Jar包
- Spring Boot打包可执行的jar或者war文件
- spring boot -- 打包jar,war(一)
- Spring Boot 使用Jar打包发布, 并使用 Embedded Jetty/Tomcat 容器
- springboot web项目打包成 jar包部署在服务器
- springboot打包jar无法扫描到.xml文件的问题
- Springboot/spring maven引入本地jar包,并成功打包部署
- Spring-boot web 工程构建,并把maven子项目模块依赖jar打包,笔记
- Spring boot Maven 打包引入本地的jar包
- Springboot项目按自定义的jar包方式打包