解决maven打包时手动添加的依赖jar包打不进去的情况

这个问题忙了我一天多的时间,因为太棘手了, 所以记录下来,防止忘记;

问题是这样的,因为项目中用到了自定义的jar包,也就是远程仓库里没有的jar,所以想要引用就必须自己手动添加进去,在idea中运行是没问题的,但是打包到测试环境后发现经常报错

java.lang.NoClassDefFoundError   和  ClassNotFoundException 异常,经过一查找才发现是因为打包的时候依赖jar包没打进去;

一开始是在项目中导入了本地的jar包。发现没用

网上找到问题说是因为scope指定了system域是系统范围使用的,在打包时不会将这个空间的包打进lib目录下;

然后也在项目中手动添加了这个依赖jar包;发现还是不行

但是不管是mvn install 还是mvn package 打包后,在war包里的 WEB-INF/lib 目录下都没看到这个jar包

根据这个问题,网上尝试了很多方法都没用,最后自己在一个网站上找到了方法
 

解决方案

1、在pom.xml文件的 build 标签下面加入以下代码即可


<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.6</version>
    <configuration>
        <webResources>
            <resource>
                <!-- 源jar包所在位置, ${project.basedir} 表示当前目录的路径 -->
                <directory>${project.basedir}/lib</directory>

                <!-- 打包后的目标文件夹  ,也就是你打包后的war包或者jar包的目录  -->
                <targetPath>WEB-INF/lib</targetPath>
                <filtering>false</filtering>
                <includes>
                    <!-- 把所有的jar包都打进去 -->
                    <include>**/*.jar</include>
                </includes>
            </resource>
        </webResources>
    </configuration>

加好后的代码如下 

 

2、因为有了  <directory>${project.basedir}/lib</directory>  ,所以我们需要在当前项目下建立一个lib文件夹,然后把需要打包的jar放进去

 

3、添加这段代码后再执行mvn packge 或者mvn install。我们可以看到,jar包已经打进去了

相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页