springboot加载外部依赖并在构建包时将其打入相应的目录下


当我们在maven仓库中无法找到需要的依赖时,需要将相应的依赖jar包下载下来放到项目的某个目录下,然后通过配置文件配置将其引入项目中使用。如下引入sigar依赖:具体下载地址

1、依赖具体目录如下:

2、pom.xml配置:


<dependency>
    <groupId>org.hypericgroupId>
    <artifactId>sigarartifactId>
    <scope>systemscope>
    <version>1.6.4version>
    <systemPath>${project.basedir}/libs/sigar.jarsystemPath>
dependency>

maven构建打包插件配置将Scope为system的依赖加入构建包中:

<plugin>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-maven-pluginartifactId>
    <configuration>
        
        true
    configuration>
plugin>

或者配置resources进行配置将外部依赖jar放入BOOT-INF/lib/目录下

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

这样在构建好的包中就能将sigar.jar打入构建包中:

   这个场景对于少数本地jar依赖添加处理还行,如果lib下有很多jar需要添加处理,显然不是很方便,此时可以在插件maven-compiler-plugin中进行配置编译参数,添加extdirs将jar包相对路径添加到配置中,如下: 

<plugin>
    <artifactId>maven-compiler-pluginartifactId>
    <configuration>
        <source>1.8source>
        <target>1.8target>
        <encoding>UTF-8encoding>
        <compilerArguments>
            <verbose />
            
            <bootclasspath>${java.home}/lib/rt.jar;${java.home}/lib/jce.jar;${java.home}/lib/jsse.jarbootclasspath>
            ${project.basedir}/libs
        compilerArguments>
    configuration>
plugin>