场景一
在一些特殊的情况下,需要导入本地的jar包到项目中,这时候需要做一些设置才能在打包的过程中不会出现找不到jar包的问题。
解决方法
1、项目根目录下创建lib目录,将jar放到该目录下
song-publish
├──lib
│ └── opencv-346.jar
│ └── nvwa-http-util-1.0.1-SNAPSHOT.jar
├──src
├──pom.xml
2、pom.xml文件中配置引用依赖
<dependency>
<groupId>com.nvwa</groupId>
<artifactId>nvwa-opencv</artifactId>
<version>1.0.1-SNAPSHOT</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/opencv-346.jar</systemPath>
</dependency>
<dependency>
<groupId>com.nvwa</groupId>
<artifactId>nvwa-http-util</artifactId>
<version>1.0.1-SNAPSHOT</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/nvwa-http-util-1.0.1-SNAPSHOT.jar</systemPath>
</dependency>
3、打包部署的时候需要将jar,package到lib中,pom.xml中还需要添加includeSystemScope为true
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
</plugins>
</build>
场景二
我们在使用opencv的时候需要引入本dll地库
解决方案
增加配置类
1、在不同系统中需要加载不同的文件,在初始化的时候进行库的加载
@Configuration
@Slf4j
public class OpencvConfig {
@Bean
public void opencvLoad() {
//判断运行系统
String osName = System.getProperties().getProperty("os.name").toLowerCase();
log.info("---runtime environment:{}", osName);
//linux环境下
if (osName.contains("linux")) {
System.load("/opencv/opencv-3.4.6/build/lib/libopencv_java346.so");
log.info("---linux laod opencv libopencv_java346.so done");
}
//window环境下
if (osName.contains("win")) {
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
//System.load("E:\\IdeaProjects\\da-publish\\lib\\opencv_java3416.dll");
log.info("---linux laod win opencv_java3416.dll done");
}
}
}