zoukankan      html  css  js  c++  java
  • 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

    写在最后

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

     相关推荐:

  • 相关阅读:
    测试面试03
    测试面试02
    测试面试01
    测试10
    测试09
    Python 知识要点:变量 可变和不可变
    Python 知识要点:变量及引用
    Python 知识要点:名片管理系统 2.0
    Python 知识要点:多值参数
    Python 知识要点:四种数值交换方法
  • 原文地址:https://www.cnblogs.com/Marydon20170307/p/11863227.html
Copyright © 2011-2022 走看看