Maven2学习总结

Maven2学习总结

 

1.        基本原理

 

Maven2 的目的是对项目进行统一管理。其基本原理是,通过pom.xml来配置项目在整个生命周期得各种行为,包括构建、修改、编译、测试、打包等等。Maven2对项目采用依赖管理模型的方式来管理。它将各个应用所需要依赖得jar包和资源统一保存在本地仓库和远程仓库中。当某个应用需要这个资源时,maven会从其本地仓库中取出该资源供项目使用。如果本地仓库中没有该资源,则maven会自动去远程仓库中将该资源下载到本地仓库中。本地仓库一般位于C:/Documents and Settings/USERNAME/.m2/repository中。来管理各个项目所需要用到的插件。它将  pom.xml  中定义的  jar  文件从远程仓库下载到本地仓库,从而使各个应用都使用同一个本地仓库的jar ,同一个版本的jar只需下载一次,这样可以避免每个应用都去拷贝jar

Maven2采用了现在流行的插件体系架构,只保留最小的核心,其余功能都通过插件的形式提供,所以在执行maven任务时,才会自动下载需要的插件。这个特性为客户系统的升级带来的很大的方便,客户每次升级的时候可以使用maven的远程部署功能自动下载最新的系统组件(jar),并重新打包部署,很大程度的减少的系统升级的工作量。远程仓库可以从Mavem2_Home/conf/setting.xml文件里的<repositories>元素来配置。

Maven2的关键模型如图1所示。它展示了maven2的核心模型和它们之间的关系。

       1maven2关键模型

其中的Project object model即是pom.xml。而Dependency management model就是maven2所需要的资源仓库,包括本地和远程仓库,依赖项都通过pom.xml中的<dependency>片段来指定。Project life cycle and phases maven定义的项目的生命周期和阶段。它定义了几乎所有的生命周期阶段。这些阶段为插件和mojo的执行提供了合适的时机。下面列举一些定义的生命周期和其定义:

验证 确保当前配置和 POM 的内容是有效的。这包含对 pom.xml 文件树的验证。

初始化 在执行构建生命周期的主任务之前可以进行初始化。

生成源码 代码生成器可以开始生成在以后阶段中处理或编译的源代码。

处理源码 提供解析、修改和转换源码。常规源码和生成的源码都可以在这里处理。

生成资源 可以生成非源码资源。通常包括元数据文件和配置文件。

处理资源 处理非源码资源。修改、转换和重定位资源都能在这阶段发生。

编译 编译源码。编译过的类被放到目标目录树中。

处理类 处理类文件转换和增强步骤。字节码交织器和常用工具常在这一阶段操作。

生成测试源码 mojo 可以生成要操作的单元测试代码。

处理测试源码 在编译前对测试源码执行任何必要的处理。在这一阶段,可以修改、转换或复制源代码。

生成测试资源 允许生成与测试相关的(非源码)资源。 处理测试资源 可以处理、转换和重新定位与测试相关的资源。

测试编译 编译单元测试的源码。

测试 运行编译过的单元测试并累计结果。

打包 将可执行的二进制文件打包到一个分布式归档文件中,如 JAR WAR

前集成测试 准备集成测试。这种情况下的集成测试是指在一个受到一定控制的模拟的真实部署环境中测试代码。这一步能将归档文件部署到一个服务器上执行。

集成测试 执行真正的集成测试。 后集成测试 解除集成测试准备。这一步涉及测试环境重置或重新初始化。

检验 检验可部署归档的有效性和完整性。过了这个阶段,将安装该归档。

安装 将该归档添加到本地 Maven 目录。这一步让其他可能依赖该归档的模块可以使用它。

部署 将该归档添加到远程 Maven 目录。这一步让这个工件能为更多的人所用。

 

插件和mojo是执行具体任务的功能模块或资源。Maven2引擎就是对这些插件和mojo的管理和协调器。

 

2.        使用maven2构建一个j2ee web application 项目

 

首先创建一个web app 的框架:

进入命令行,进入要创建web应用的目录,输入如下命令:

mvn archetype:create –DgroupId=com.lz.app –DartifactId=my-webapp –DarchetypeArtifactId=maven-archetype-webapp

 

其中-DgroupId指定项目的目录结构。

    -DartifactId指定项目名称。

    -DarchetypeArtifactId指定项目构建类型,maven提供了多种默认的项目类型,这里是webapp类型。

构建成功后,会生成如图2所示目录结构:

2web-app目录结构

 

   目录中没有之前在-DgroupId中定义的com.lz.app的包结构,因此需要手动添加如下目录:

   my-webapp/src/main/java/com/lz/app

   my-webapp/src/test/java/com/lz/app

    添加后在相应的地方加入相应的类和测试类。得到目录结构如图3所示;

3:完整的web应用开发目录结构

 

    为了对项目中的java文件和生成的类进行编译和测试,需要修改pom.xml文件,加入对应的编译和测试插件。Maven默认已经将junit 3.8.1 包含进来,这里需要添加jdk1.5编译器。Pom.xml文件如下所示:

    <project xmlns="http://maven.apache.org/POM/ 4.0.0 " xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  xsi:schemaLocation="http://maven.apache.org/POM/ 4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

  <modelVersion> 4.0.0 </modelVersion>

  <groupId>com.lz.app</groupId>

  <artifactId>my-webapp</artifactId>

  <packaging>war</packaging>

  <version>1.0-SNAPSHOT</version>

  <name>my-webapp Maven Webapp</name>

  <url>http://maven.apache.org</url>

   

  <dependencies>

    <dependency>

      <groupId>junit</groupId>

      <artifactId>junit</artifactId>

      <version> 3.8.1 </version>

      <scope>test</scope>

    </dependency>

   

  </dependencies>

  <build>

    <finalName>my-webapp</finalName>

    <plugins>

        <plugin>

           <artifactId>maven-compiler-plugin</artifactId>

           <configuration>

               <source>1.5</source>

               <target>1.5</target>

           </configuration>

        </plugin>

    </plugins>

  </build>

</project>

 

可以对该项目进行测试、打包、安装。完成项目的部署,分别为如下命令:

    mvn test

    mvn package

    mvn install

 

3.        j2ee web application项目与eclipse开发环境的集成

 

j2ee web apolication项目与eclipse开发环境集成。首先需要在eclipse中安装maven2插件。

安装完成后,依照上一节的步骤创建web项目结构。

之后打开eclipse,将该项目导入。

修改pom.xml, 添加需要的编译器和其他插件。与上节同。

之后使用如下命令将其变为一个eclipse工程:

mvn eclipse:eclipse –DdownloadSources=true

这个命令会将工程将框架转换为eclipse工程,并从远程下载jar包到本地仓库(window下是(C:/Documents and Settings/${username}/.m2/repository),之后执行:

mvn –Declipse.workspace=<path-to-eclipse-workspace> eclipse:add-maven-repo

其中path-to-eclipse-workspace是本机的eclipseworksapce的路径。执行后maven会在eclipse中建立一个M2_REPO环境变量,并将其中所有的jar包引入到工程中。

之后再配置项目的build path,将src/main/java,src/main/resources,src/test/java设为source folder。并将其输出文件夹配置为src/main/webapp/WEB-INF/classes。以方便在本地部署测试。此时项目在eclipse中目录如图4所示:

 4:集成到eclipse环境中的maven构建web项目。

 

至此,便完成了maven构建项目与eclipse的集成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值