在IDEA中简单使用Maven构建web项目

本文介绍了如何在IDEA中使用Maven构建web项目,涵盖POM解析、Maven目录结构、生命周期、依赖管理、继承、聚合、war包运行及自动部署等关键概念。通过Maven的约定和配置,可以更高效地管理项目及其依赖。

在这之前简单介绍一下Maven:

Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。

一、POM

含义:Project Object Model 项目对象模型
作用:pom.xml对于Maven工程是核心配置文件,与构建过程相关的一切设置都在这个文件中进行配置,重要程度相当于web.xml对于动态web工程。

二、Maven约定的目录结构

以IDEA中的web项目为例

  • src:存放项目的源码
  • main: 存放主程序,包括java代码和页面jsp
  • java:存放java源文件
  • resource:存放各类框架的配置文件
  • webapp:存放jsp页面,包括js,css文件
  • lib:存放jar包
  • test:存放测试程序
  • pom.xml:maven的主要配置文件

      注意:在resource下的文件会自动部署到类路径下

三、Maven的坐标

在Maven的仓库中jar包位置

四、Maven的生命周期

生命周期功能
clear删除以前的编译结果,为重新编译做好准备
validate验证项目是否正确,所有必需信息是否可用
compile将 Java 源程序编译为字节码文件
test测试所有加@Test的方法
package将编译的后文件打包,Java工程对应jar包,Web工程对应war包。
verify检查包名是否正确和符合规范
install将包安装在本地maven仓库,可以让其他项目依赖
site针对项目生成特定的站点
deploy发布到远程maven仓库,并提供给开发者使用

每一个生命周期都对应其对应的插件
在IDEA中显示如下

但是每次运行一个插件都会将其前面的插件运行一次,例如:选择package,会运行clearvalidatecompiletest,最后运行package

五、依赖

1,依赖的范围

scope编译期测试期运行期说明
compile默认
test×例如junit
provided×例如由容器提供的servlet-api

此外还有runtimesystem范围,用的不多。

2,依赖的原则

  • 作用:解决jar包的冲突问题
      1. 路径最短者优先
     
      
      2. 路径相同,先声明的优先,声明指的是dependency标签
       

3,依赖的排除

  • 目的:有时我们需要排除不稳定的依赖的jar包
  • 解决方式:
<exclusions>
        <exclusion>
            <groupId>commions-logging</groupId>
            <artifactId>commions-logging</artifactId>
        </exclusion>
    </exclusions> 

六、继承

  • 问题:test范围的依赖不能传递,会分散在各个版本之中,会造成版本的不一致。
  • 解决方式:将junit依赖版本同一提取到父工程中,在子工程中不指定版本,以父版本中的同一设定的为准,同时也便于修改。
  • 操作步骤:
      1. 创建一个Maven工程作为父工程。注意:打包的方式为pom
      2. 在子工程中声明对父工程的引用,在子工程中声明父工程 
      
      3. 将子工程的坐标中与父工程坐标中的重复的内容删除
      4. 在父工程中统一管理junit的依赖
      
      5. 在子工程中删除junit依赖的版本号部分
    注意:配置继承后,执行install命令时要先安装父工程

七、聚合

  • 作用:一键安装各个模块工程
  • 配置方式:在一个“总的聚合工程”中配置各个参与聚合的模块
  • 使用方式:在聚合工程的pom.xml点击install

八、war包的运行

我们把项目打包为war包,就可以移植到别的服务器中运行了。首先把war包复制到tomcat的webapp下,
然后在控制台中执行命令catalina run,war包就会自动解压为目录的形式。在浏览器中打上地址localhost:8080/XXX,XXX是解压出的文件名。

九、web工程自动部署(了解)

在pom.xml中编写:

<build>
        <finalName>AtguiguWeb</finalName>
        <!-- 配置构建过程中需要使用的插件 -->
        <plugins>
        <!-- cargo是一家专门从事“启动servlet容器”的组织 -->
            <plugin>
                <groupId>org.codehaus.cargo</groupId>
                <artifactId>cargo-maven2-plugin</artifactId>
                <version>1.2.3</version>

                <!-- 配置当前系统容器的位置 -->
                <configuration>
                    <container>
                        <containerId>tomcat6x</containerId>
                        <home>D:\DevInstall\apache-tomcat-6.0.39</home>
                    </container>
                    <configuration>
                        <type>existing</type>
                        <home>D:\DevInstall\apache-tomcat-6.0.39</home>
                        <!-- 如果Tomcat端口为默认值8080则不必设置该属性 -->
                        <properties>
                            <cargo.servlet.port>8989</cargo.servlet.port>
                        </properties>
                    </configuration>
                </configuration>

                <!-- 配置插件在什么情况下执行 -->
                <executions>  
                    <execution>  
                        <id>cargo-run</id> 
                        <!-- 生命周期的阶段 -->
                        <phase>install</phase>  
                        <goals>  
                        <!-- 插件的目标 -->
                            <goal>run</goal>  
                        </goals>  
                    </execution>  
                </executions>
            </plugin>
        </plugins>
    </build>    

在控制台中执行,进入项目文件里,执行mvn deploy命令自动构建。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值