eclipse maven项目如何将所有的jar包复制到lib目录下?

Posted Marydon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了eclipse maven项目如何将所有的jar包复制到lib目录下?相关的知识,希望对你有一定的参考价值。

1.情景展示

  我们知道,maven项目的jar包并不存在于项目当中,项目所需的jar包都保存在本地仓库中,如果本地仓库没有,会从配置的中央仓库下载,如果中央仓库也没有就会报错;

  如上图所示,我想将项目所依赖的所有jar包都放在src/main/webapp/WEB-INF/lib目录下, 如何实现?

  这样做的目的,是为了可以热部署。

2.分析

  默认情况下,要想获取项目所依赖的jar包,需要执行maven命令来实现,比如:mvn install

  执行后,target目录下会出现该项目以及已经打好的包。

3.解决方案

   通过更改maven默认的打包目录来实现。

   第一步:借助插件maven-war-plugin更改项目打包所需的目录位置

<build>
    <finalName>mavenProject</finalName>
    <plugins>
        <!-- 
            更改maven默认的打包目录
            maven默认打包目录:project/target/project/
            更改后的目录: project/src/main/webapp/
            更改后的改变:
            1.target目录下不再生成项目,只生成项目对应的war包。
            2.项目所需要的jar包会拷贝到lib目录下
        -->
        <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <webappDirectory>${project.basedir}/src/main/webapp</webappDirectory>
                <warSourceDirectory>${project.basedir}/src/main/webapp</warSourceDirectory>
            </configuration>
        </plugin>
    </plugins>
</build>

  第二步:更改class文件的编译位置

  outputDirectory标签添加到build标签体内。

<!-- 
    更改maven默认class文件编译位置
    maven默认编译目录:project/target/classes/
    更改后的目录: project/src/main/webapp/WEB-INF/classes/
 -->
<outputDirectory>${project.basedir}/src/main/webapp/WEB-INF/classes</outputDirectory>  

  更改前的如上图所示,更改后,执行maven打包命令,效果图如下:

  说明:

  通过pom.xml更新jar包依赖后,需要Alt+F5,重新编译项目;

  如果pom.xml中添加删除了对某个jar包的引用或者修改某个jar包的版本号,要想使lib目录同步,需要手动将lib目录下的jar包删光,否则,已经删除的jar包不会自动删除,已经更新版本的jar包会存在多个版本。

  重新使用mvn clean install命令,才能将更新后的jar包同步到lib目录下。

  第二步最好不要省略,因为如果不修改class的默认编译位置的话,同样存在着class文件无法同步的情况。

4.扩展 

  拓展一:在项目未打包前,也就是未执行mvn install命令时

  在eclipse中,这并不影响,我们正常运行项目。

  此时,并未执行mvn install命令,lib目录下也没有jar包。 

  前提:选中项目--》右键run as 或者debug as

  eclipse会自动将pom文件中配置的jar包拷贝到{tomcat/webapps}/项目/WEB-INF/lib目录下

  所以,项目可以正常运行而不报错。

  之所以eclipse这么智能,是因为:

  eclipse为mavenWeb项目添加了这个设置

  将项目所需要的jar包,放置到WEB-INF/lib目录下。 

  不信自己可以测试一下。

  如何添加这项设置?

  如果按照我给你的流程创建mavenWeb项目,那这个设置肯定是有的,但是如果没有,请按下方操作:

  第一,选中项目--》右键属性--》Deployment Assembly(如果你没有这个选项,说明你的项目不是一个真正的web项目)

  第二,右侧--》Add--》Java Build Path Entries--》Next--》选中Maven Dependencies--》Finish

 

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

 相关推荐:

 

以上是关于eclipse maven项目如何将所有的jar包复制到lib目录下?的主要内容,如果未能解决你的问题,请参考以下文章

如何在eclipse中查找maven的各个jar包依赖的是别的啥jar包

已经搭建好java项目,如何直接将maven本地仓库中的所有jar通过pom直接引入

如何使用eclipse maven构建hbase开发环境

请教eclipse maven 如何 "批量" 添加本地jar包

Eclipse如何导入jar包

Maven如何将别人的项目导入到自己的eclipse并使用