Spring Boot - 使用第三方Jar
在项目中我们经常需要使用第三方的Jar,出现这种情况的原因在于,即便我们有Nexus或者其他Artifactory. @pdai
注意: 在Springboot+JavaFx中,引入第三方jar并编译成可执行文件,方式上有差别。
方案一
本地编译
本地编译只是表示能够让IDE解析Jar, 不出现红叉;
Maven编译
需要告诉Maven编译的插件,指定当前的项目编译所依赖的Jars.
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<compilerArguments>
<extdirs>${basedir}/libs</extdirs>
</compilerArguments>
</configuration>
</plugin>
Spring Boot Jar run
你以为这么就能让Spring boot 打出的Jar直接运行了? 其实并没有,Maven编译和运行依赖Jar是两码事, 所以还需要指定Spring Boot中运行所需要的jar依赖(resources)
<resources>
<resource>
<filtering>true</filtering>
<directory>${basedir}/src/main/resources</directory>
<includes>
<include>**/application*.yml</include>
<include>**/application*.properties</include>
</includes>
</resource>
<resource>
<directory>${basedir}/src/main/resources</directory>
<excludes>
<exclude>**/application*.yml</exclude>
<exclude>**/application*.properties</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
<targetPath>BOOT-INF/lib/</targetPath>
<includes>
<include>**/*.jar</include>
</includes>
</resource>
</resources>
方案二
使用systemPath属性,<scope>system</scope>
, 其它gav三元组是可以随意填写的。
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>taobao-sdk-java</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/libs/taobao-sdk-java-auto_1479188381469-20180831.jar</systemPath>
</dependency>
springboot在打包的时候,调用spring-boot-maven-plugin,执行repackage把tomcat和resource,lib等合成一个新的jar。想要将系统jar打进去,必须配置includeSystemScope。最终会将lib放入BOOT-INF\lib
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
<executions>
<execution>
<goals>
<goal>build-info</goal>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>