通过maven解决项目依赖本地的jar,在打包时这些jar未被打包的问题(compilerArguments>extdirs)

前言

在项目开发中,项目用maven管理,是一个maven项目。
一般情况下jar包都可以使用pom.xml来配置管理,但也有一些时候,我们项目中使用了一个内部jar文件,但是这个文件我们又没有开放到maven库中。
我们会将文件放到我们项目WEB-INF/lib中。如果是springboot项目放到resources/lib。
如果我们不对pom.xml进行特殊配置的话,maven打包是不会自动去引用和编译lib中的jar文件的,所以需要我们修改下pom.xml文件。导致的类找不到的问题。如下图:

解决方式

方法一:Maven提供了scope为system的依赖,我们可以在maven中进行如下配置

第一步.配置资源引用

        <dependency>
            <groupId>com.jd.cps</groupId>
            <artifactId>jd-cps-client</artifactId>
            <version>2.2</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/src/main/resources/lib/jd-cps-client-2.2.jar</systemPath>
        </dependency>

第二步.目前第二步有三种方式

方式1:在spring-boot-maven-plugin插件中配置<includeSystemScope>true</includeSystemScope>(即包含scope未system的依赖)

            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork>
                    <includeSystemScope>true</includeSystemScope><!--主要是这个配置-->
                    <mainClass>com.xy.im.admin.xxxApplication</mainClass>
                    <layout>ZIP</layout>
                    <!--使用外部配置文件,jar包里没有资源文件-->
                    <addResources>true</addResources>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

方式二:在build标签中添加以下代码,可以把指定的资源放到特定的位置

        <resources>
            <resource>
                <directory>lib</directory>//需要的资源位置
                <targetPath>/BOOT-INF/lib/</targetPath>//需要的资源最终要放到的位置
                <includes>
                    <include>**/*.jar</include>
                </includes>
            </resource>
        </resources>

这种方式在jar的个数较少时非常方便,但是一但jar多时就会显得很麻烦了。所以最好是能方便配置整个lib目录,让该目录下所有jar包都参与编译,方法二便可以解决这种需求。

关于maven中pom的属性可参考:https://blog.csdn.net/moonpure/article/details/82380456

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值