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

时间:2022-10-05 22:37:57
 

1.情景展示

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

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

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

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

2.分析

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

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

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

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打包命令,效果图如下:

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

  说明:

  通过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 maven项目如何将所有的jar包复制到lib目录下?

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

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

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

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

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

  不信自己可以测试一下。

  如何添加这项设置?

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

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

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

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

写在最后

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

相关推荐:

 

eclipse maven项目如何将所有的jar包复制到lib目录下?的更多相关文章

  1. eclipse maven项目导出所使用的jar包

    在eclipse中定位到maven项目的pom.xml文件右击pom.xml文件,选择Run As-->Maven build…在打开的页面中,GOLAS栏输入“dependency:copy- ...

  2. Eclipse下新建Maven项目、自动打依赖jar包

    当我们无法从本地仓库找到需要的构件的时候,就会从远程仓库下载构件至本地仓库.一般地,对于每个人来说,书房只有一个,但外面的书店有很多,类似第,对于Maven来说,每个用户只有一个本地仓库,但可以配置访 ...

  3. eclipse java项目中明明引入了jar包 为什么项目启动的时候不能找到jar包 项目中已经 引入了 com&period;branchitech&period;app 包 ,但时tomcat启动的时候还是报错? java&period;lang&period;ClassNotFoundException&colon; com&period;branchitech&period;app&period;startup&period;AppStartupContextListener java&period;lang&period;ClassN

    eclipse java项目中明明引入了jar包 为什么项目启动的时候不能找到jar包 项目中已经 引入了 com.branchitech.app 包 ,但时tomcat启动的时候还是报错?java. ...

  4. MyEclipse部署外部引用的jar到web-inf的lib目录下

    在用MyEclipse开发java web项目的时候,引入了外部jar,都是以library的形式存在左边的explore中的,调试没有问题,但是部署之后呢,经常遇到个非常头疼的问题就是,这些jar不 ...

  5. Eclipse里面的Maven项目如果下载依赖的jar包的源码

    Window---------Properties---------------Maven--------------勾选Download Artifact Sources和Download Arti ...

  6. maven项目发布到Tomcat丢失jar包

    昨天看了一篇tomcat设置的文章,说要把第一个勾上,这样不需要更新到tomcat.  一启动tomcat就发现丢包.后来在网上看了许多文章,说要update maeven项目,然后你就会发现启动过程 ...

  7. maven项目使用自己创建的jar包--maven without test code

    eclipse版本为2018-12(4.10.0) 1.创建一个jar包 首先自己建立了一个maven project,名为jweb.GAV坐标: <groupId>amberai< ...

  8. 3&period;如何在Maven项目中引入自己的jar包

    1.一般情况下jar包都可以使用pom.xml来配置管理,但也有一些时候,我们项目中使用了一个内部jar文件,但是这个文件我们又没有开放到maven库中. 我们会将文件放到我们项目中.(以下以java ...

  9. 通过idea 打包 spring maven项目打包为可执行jar包

    用assembly打包一直报错: shangyanshuodeMacBook-Pro:target shangyanshuo$ java -jar jobscrawler-1.0-SNAPSHOT-j ...

随机推荐

  1. IOCP之客户端及消息传递

    上篇说到IOCP的精简实现,这篇来讲IOCP客户端和消息传递 在ConnectEx代码之前,CreateIoCompletionPort的第三个参数,把socket句柄+0x01000000作为传递 ...

  2. Javascript 笔记与总结(1-5)闭包

    [例1] <script> function t1(){ var age = 20; function t2(){ alert(age); } return t2; } var tmp = ...

  3. UNIX环境高级编程——标准I&sol;O库

    对一个进程预定义了三个流,并且这三个流可以自动的被进程使用,它们是:标准输入.标准输出.和标准错误. 标准I/O库提供缓冲的目的是尽可能减少使用read和write的次数. 标准I/O库提供了三种类型 ...

  4. &lbrack;LeetCode&rsqb; Letter Case Permutation 字母大小写全排列

    Given a string S, we can transform every letter individually to be lowercase or uppercase to create ...

  5. 百练6255-单词反转-2016正式B题

    百练 / 2016计算机学科夏令营上机考试 已经结束 题目 排名 状态 统计 提问   B:单词翻转 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  65536kB 描述 输入一个 ...

  6. Ubuntu 10&period;04里安装强大抓图工具Shutter

    Shutter 原名叫GScrot,是一款Linux下很强大的抓图工具,支持截取全屏幕,窗口,自选区域以及网页的图像,并且截取后的图像还可以简单编辑,Shutter还支持插件功能,矩齿,边缘化,碎纸, ...

  7. xml布局内容总结(一)--Android

    关于安卓项目中xml的使用非常多.为了达到一些好的UI效果.须要对xml比較熟练.会使用非常多的小技巧,本人准备对这些小技巧进行整理和总结,希望进行分享和交流. 关于weight的使用,因为weigh ...

  8. 阻塞队列之二:LinkedTransferQueue

    一.LinkedTransferQueue简介 TransferQueue是一个继承了BlockingQueue的接口,并且增加若干新的方法.LinkedTransferQueue是TransferQ ...

  9. Centos&sol;ubuntu配置SVN服务

    Centos安装svn yum -y install subversion ubuntu安装svn apt-get install subversion Centos配置svn root@hello: ...

  10. 6&period;0动态加载权限用PermissionGen

    ndroid 6.0 新增加了运行时的动态添加权限,在此介绍一个第三方库,PermissionGen,可以很方便简洁的增加 6.0权限 首先给大家上  PermissionGen 库地址:https: ...