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

### 创建 Java Web 项目IntelliJ IDEA 2022 版本中创建 Java Web 项目的过程涉及多个步骤,确保环境设置正确并能够顺利运行。以下是详细的指导: #### 准备工作 安装好 IntelliJ IDEA 并配置 JDK 后,在启动界面选择 "Create New Project" 或者通过菜单栏 `File -> New -> Project` 打开新建工程向导。 #### 新建项目 1. **选择模块类型** - 在弹出的新建项目窗口里,左侧列表中找到并选中 “Java”,右侧勾选“Web Application”。这会自动引入必要的 Servlet API 支持[^1]。 2. **指定项目名与路径** - 输入想要的名字作为项目名称,并设定保存的位置;完成后点击 Next 继续下一步操作。 3. **完成初始化** - 设置完毕后按 Finish 键结束新项目的建立流程。此时 IDE 就已经开始为你准备基础架构了。 #### 配置项目结构 为了使项目更贴近传统开发模式而依赖于现代构建工具如 Maven 或 Gradle,需手动调整一些参数来适应无构建工具的情况: - 使用鼠标右键单击项目根目录下的 src 文件夹,依次选取 `Mark Directory as -> Sources Root` 来标记源码区; - 接着同样方式处理 test 下面的 java 和 resources 子文件夹,分别设为测试源代码区域(Test Sources Root)和资源文件夹(Resources Root)[^2]。 #### 添加框架支持和服务部署描述符(web.xml) - 对于传统的 Java EE 应用程序来说,还需要定义服务端点映射关系等信息,因此要增加 web.xml 文件用于声明应用程序上下文中的组件注册表。可以通过如下方法实现: - 右键 project name->Add Framework Support... ,然后选择Servlets; - 这样做会在 WEB-INF 文件夹内自动生成默认模板形式的 web.xml 文档[^3]。 #### 构建类库引用 由于未采用自动化管理依赖项的方法,则需要自行下载所需 jar 包并将它们加入到 build path 当中去。具体做法是在 WEB-INF/lib 目录下放置第三方库文件,随后更新 module settings 中 Libraries 的相关内容以便让编译器识别外部包的存在。 #### 测试服务器集成(Tomcat) 最后一步便是关联本地已有的 Tomcat 实例至当前 workspace 内部,从而方便调试期间快速发布应用实例。执行以下命令可达成目的: - 转到 Run/Debug Configurations 页面,点击左上方 "+" 符号新增一项 Artifacts Entry Point; - 按照提示逐步完善各项属性直至成功添加为止; - 返回主界面,按下 Shift+F10 即可在内置浏览器预览效果啦! ```xml <!-- 示例:web.xml --> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> </web-app> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值