IDEA手动创建Maven Java Web项目后lib文件夹不更新的解决方法

问题描述

在idea中,当我们手动创建使用了Maven的java web项目,虽然我们已经在Project Structure中的添加了web facet和对应的war exploded artifact后,一切都可以正常运行。但唯独在我们修改(添加、删除)jar包后,lib文件夹不能即时的对应更新,需要手动在war exploded artifact中修改(把新增的添加、删除了的去掉)。

原因分析

由于本项目使用了Maven来打包编译,但Maven没有在每次打包编译时更新对应的jar包到lib文件夹中。其根本原因是项目的Maven配置认为本项目的打包方式是默认的jar方式,故没有更新lib文件夹。我们需要把本项目的打包方式设置为war即可。

解决方法

在pom.xml中设置war打包方式:

<packaging>war</packaging>

这样lib文件夹就会在每次打包编译时更新了。

附加问题及处理

但是,修改了pom.xml文件后,当我们每次更新maven配置(即点击Maven窗口的reload all maven projects按钮)后,idea会去读取Maven的配置并解析到项目的相关配置项中,项目的web facet里面的设置会变回maven的默认配置。如war source directory(web的根目录)在 b a s e d i r / s r c / m a i n / w e b a p p 中 , 而 我 的 项 目 的 w a r s o u r c e d i r e c t o r y 在 {basedir}/src/main/webapp中,而我的项目的war source directory在 basedir/src/main/webappwarsourcedirectory{basedir}/web中。这样就造成了对应的war exploded artifact不能工作了。由于项目的packing为war,默认使用maven-war-plugin来打包。此时,我们需要在pom.xml中设置maven-war-plugin设置相关的配置即可。如设置web项目的warSourceDirectory在${basedir}/web中。

<build>
        <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.2.2</version>
                <configuration>
                    <warSourceDirectory>${basedir}/web</warSourceDirectory>
                </configuration>
            </plugin>
        </plugins>
        </pluginManagement>
    </build>

这样每次刷新maven配置,idea就会读到对应正确的路径,不会报错了。所有一切均可以正常工作了。
关于maven-war-plugin的war exploded参数可以参考官方网页:
Apache Maven WAR Plugin – war:exploded

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值