请问基于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却是不生效了,暂未找到问题原因

阅读 25.7k
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>

牛逼 试了很多 就你这个好

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏