maven项目打包时外部引入jar包无法打到项目中的解决方案

— 遇到问题

昨天在用Maven打包时,发现一个错误,报错信息如下图所示:

— 找到问题根源

这个问题由于是第一次遇到,我网上找了很多办法,都没有解决,主要是问题的根源没有找到,最后经过我的一番不懈探索!!我终于发现了问题的根源(其实仔细看报错信息,你发现其实问题描述的很清除了,就是程序引用的包找不到,而这些所有错误基本都是指向了自己引进的jar包):原因就在于我引入了外部(非maven导入的)jar包,如下图所示。


由于maven项目打包的时候默认是不会把外部jar包打到项目中去的,所有如果直接在maven里面打包,就会报程序包找不到的错误等等。

— 解决问题

问题的根源找到了,问题就很好解决了。这里给出两种解决办法

方式1

直接在 pom.xml 里面加入下面代码(因为我的jar包都是放在/src/main/resources/lib下面,所有我这里的路径就是这样):

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
        <encoding>UTF-8</encoding>
        <compilerArguments>
            <extdirs>${project.basedir}/src/main/resources/lib</extdirs>
        </compilerArguments>
    </configuration>
</plugin>

我加了之后再打包是没有问题的,但是我部署的时候又出现了问题,所以我又找到了另外一种解决办法。

方式2

第一步:其中 groupId 和 artifactId 可以随便填,注意 artifactId 不要重复了,version 版本号jar包是什么版本就是什么版本,否则可以随便填。

<!--引入外部jar包-->
<dependency>
    <groupId>com.1</groupId>
    <artifactId>out-jar-1</artifactId>
    <version>1.45</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/resources/lib/bcprov-jdk16-1.45.jar</systemPath>
</dependency>
<dependency>
    <groupId>com.2</groupId>
    <artifactId>out-jar-2</artifactId>
    <version>1.6</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/resources/lib/commons-codec-1.6.jar</systemPath>
</dependency>

第二步:如果是SpringBoot项目还要加如下配置:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <fork>true</fork>
        <includeSystemScope>true</includeSystemScope>
    </configuration>
</plugin>

具体在我的项目中是这样(主要是看路径):


以上步骤做完之后,再部署的时候,就完全没有问题了。

猜你喜欢

转载自blog.csdn.net/weixin_42135693/article/details/106643695