请问基于maven的sprng boot的项目中如果想要导入本地的一些jar文件在打成jar包的时候如何让它们都被包含进去呢

1.最近项目需要对接第三方的提供的数据,需要我这边导入一些他们的jar包到项目里,当时搭建项目用的springboot,对于maven本地依赖jar,网上也搜了点资料,能在本地调试和编译的时候正常依赖,但是在打成jar包的时候,那些本地依赖的jar没有被导入到里面去,有没有了解基于springboot生成的fat jar中如何引入本地的jar包呢,项目是maven构建的,代码明天提供。
pom.xml:

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                    <compilerArguments>
                        <extdirs>${project.basedir}/lib</extdirs>
                    </compilerArguments>
                </configuration>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <targetPath>BOOT-INF/lib/</targetPath>
                <includes>
                    <include>**/*.jar</include>
                </includes>
            </resource>

            <resource>
                <directory>src/main/resources</directory>
                <targetPath>BOOT-INF/</targetPath>
                <includes>
                    <include>**/*.properties</include>
                </includes>
            </resource>
        </resources>
    </build>

添加resouces配置后发现,打包后的jar里面虽然包含了自己本地jar,但是对于手动添加进去的applciation.properties却是不生效了,暂未找到问题原因

阅读 19.8k
评论
    7 个回答

    已解决,把父配置文件里面的resources依赖粘过来就行了,但是不太了解其中几个字段的意思像<filtering>、
    <excludes>

    <resources>
                <resource>
                    <directory>${basedir}/src/main/resources</directory>
                    <filtering>true</filtering>
                    <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>

      spring boot 不用这么复杂吧,

          <dependency>
              <groupId>llw-base-rpc</groupId>
              <artifactId>llw-base-rpc</artifactId>
              <version>1.0</version>
              <scope>system</scope>
              <systemPath>${project.basedir}/lib/llw-base-rpc.jar</systemPath>
          </dependency>

      </dependencies>
      <build>

      <finalName>ahcss-web-admin</finalName>
      <plugins>
              <plugin>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-maven-plugin</artifactId>
                  <!-- <configuration>
                      <includeSystemScope>true</includeSystemScope>
                  </configuration> -->
              </plugin>
      

      把 includeSystemScope 属性设置成 true就可以了

        图片描述

        比如要把Oracle打入依赖 pom文件这样配:

        <dependency>  
            <groupId>ojdbc6</groupId>  
            <artifactId>ojdbc6</artifactId>  
            <version>6</version>  
            <scope>system</scope>  
            <systemPath>${project.basedir}/lib/ojdbc6.jar</systemPath>  
        </dependency>
        
        </dependencies>
        
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <includeSystemScope>true</includeSystemScope>
                </configuration>
                </plugin>
            </plugins>
        </build>
        

        在打包完成的jar里解压看到BOOT-INF/lib下已经有ojdbc6.jar了
        图片描述

          没遇到过,有可能你的依赖的maven scope属性是test,所以打包不进去。也有可能是下面这个原因https://my.oschina.net/ziming...试试这个?

            同学, 你为什么一定要把一个第三方jar包放在你的resource文件夹里面呢, resource默认语义是放资源文件的, 你刚开始的时候配置资源文件只取jar文件,所以它才不去取.properties和.yml文件的。
            建议本地的第三方jar可以新建一个文件夹/lib 来存放。

            然后配置一下本地依赖:(groupId/artifactId/version随便填一个即可)

            <dependency>
                <groupId>com.xxx</groupId>
                <artifactId>xxx</artifactId>
                <version>v0.1</version>
                <scope>system</scope>
                <systemPath>${project.basedir}/lib/YOUR_JAR_NAME.jar</systemPath>
            </dependency>

              牛逼 试了很多 就你这个好

                • 1
                • 新人请关照

                那么还有一个问题,我所打包的主模块同时依赖了一个子模块,子模块中依赖了本地jar包,通过这种方式还是引入不了,这个怎么弄呢

                该答案已被忽略,原因:

                  撰写回答

                  登录后参与交流、获取后续更新提醒