标签:手动 解决方案 sed 多个 src app 如何 拷贝 图片
我们知道,maven项目的jar包并不存在与项目当中,项目所需的jar包都保存在本地仓库中,如果本地仓库没有,会从配置的中央仓库下载,如果中央仓库也没有就会报错;
如上图所示,我想将项目所依赖的所有jar包都放在src/main/webapp/WEB-INF/lib目录下, 如何实现?
这样做的目的,是为了可以热部署。
默认情况下,要想获取项目所依赖的jar包,需要执行maven命令来实现,比如:mvn install
执行后,target目录下会出现该项目以及已经打好的包。
通过更改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>
更改前的如上图所示,更改后
说明:
通过pom.xml更新jar包依赖后,需要Alt+F5,重新编译项目;
如果pom.xml中添加删除了对某个jar包的引用或者修改某个jar包的版本号,要想使lib目录同步,需要手动将lib目录下的jar包删光,否则,已经删除的jar包不会自动删除,已经更新版本的jar包会存在多个版本。
重新使用mvn clean install命令,才能将更新后的jar包同步到lib目录下。
第二步最好不要省略,因为如果不修改class的默认编译位置的话,同样存在着class文件无法同步的情况。
拓展一:在项目未打包前,也就是未执行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目录下?
标签:手动 解决方案 sed 多个 src app 如何 拷贝 图片
原文地址:https://www.cnblogs.com/Marydon20170307/p/11863227.html