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

在这之前简单介绍一下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-logginggroupId>
            <artifactId>commions-loggingartifactId>
        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>AtguiguWebfinalName>
        
        <plugins>
        
            <plugin>
                <groupId>org.codehaus.cargogroupId>
                <artifactId>cargo-maven2-pluginartifactId>
                <version>1.2.3version>

                
                <configuration>
                    <container>
                        <containerId>tomcat6xcontainerId>
                        <home>D:\DevInstall\apache-tomcat-6.0.39home>
                    container>
                    <configuration>
                        <type>existingtype>
                        <home>D:\DevInstall\apache-tomcat-6.0.39home>
                        
                        <properties>
                            <cargo.servlet.port>8989cargo.servlet.port>
                        properties>
                    configuration>
                configuration>

                
                <executions>  
                    <execution>  
                        <id>cargo-runid> 
                        
                        <phase>installphase>  
                        <goals>  
                        
                            <goal>rungoal>  
                        goals>  
                    execution>  
                executions>
            plugin>
        plugins>
    build>    

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

你可能感兴趣的:(maven)