Maven在eclipse中的实用

       Maven2 的新特性可以大大地缩短了开发管理中的工作量,使得开发人员将精力集中在实际的业务问题上。

       Maven 无疑是相当成功的,这一点从越来越多的开源项目开始使用 Maven 就可以看出。Maven 取得成功的原因很简单:在简化构建脚本的同时,功能并没有缩水,反而有所增强;提供汇集项目信息的工具,并以相当友好的方式呈现;丰富的插件简化了工作。如此有力的工具出现,自然是争相使用。

1. 更少的配置文件
            Maven1 和 Maven2 主要配置文件的对比:
              Maven1:project.xml、maven.xml、project.properties和build.properties。
              Maven2:pom.xml和settings.xml。
            POM是Maven的核心对象模型,在Maven2中POM已由project.xml转移到pom.xml中使用,一般只需要pom.xml就行了。

2. 提供预定义的目录模板
       好的目录结构可以使开发人员更容易理解项目,为以后的维护工作也打下良好的基础。Maven2根据业界公认的最佳目录结构,为开发者提供了缺省的标准目录模板。Maven2的标准目录结构如下:            

            使用目录模板,可以使pom.xml更简洁。因为Maven2已经根据缺省目录,预定义了相关的动作,而无需人工的干预。以resources目录为例:
              src/main/resources,负责管理项目主体的资源。在使用Maven2执行compile之后,这个目录中的所有文件及子目录,会复制到target/classes目录中,为以后的打包提供了方便。

              src/test/resources,负责管理项目测试的资源。在使用Maven2执行test-compile之后,这个目录中的所有文件及子目录,会复制到target/test-classes目录中,为后续的测试做好了准备。

在src和 test都使用resources,方便构建和测试,这种方式本就已是前人的经验。通过使用Maven2,使这个经验在开发团队中得到普及。

3. 生命周期的引入
            在Maven2中有了明确的生命周期概念,而且都提供与之对应的命令,使得项目构建更加清晰明了。主要的生命周期阶段:
              validate,验证工程是否正确,所有需要的资源是否可用。
              compile,编译项目的源代码。
              test-compile,编译项目测试代码。
              test,使用已编译的测试代码,测试已编译的源代码。
              package,已发布的格式,如jar,将已编译的源代码打包。
              integration-test,在集成测试可以运行的环境中处理和发布包。
              verify,运行任何检查,验证包是否有效且达到质量标准。
              install,把包安装在本地的repository中,可以被其他工程作为依赖来使用
              deploy,在整合或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。
              generate-sources,产生应用需要的任何额外的源代码,如xdoclet。
            如果要执行项目编译,那么直接输入:mvn compile即可,对于其他的阶段可以类推。阶段之间是存在依赖关系(dependency)的,如test依赖test-compile。在执行mvn test时,会先运行mvn test-compile,然后才是mvn test。
4. 新增Dependency Scope
            在POM 4中,<dependency>中还引入了<scope>,它主要管理依赖的部署。目前<scope>可以使用5个值:
              compile,缺省值,适用于所有阶段,会随着项目一起发布。
              provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。
              runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。
              test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。
              system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。
            <scope>的使用举例:

<dependency>  
    <groupId>hibernate</groupId>
    <artifactId>hibernate</artifactId>
    <version>3.0.3</version>
    <scope>test</scope>
</dependency>

  

---------------------------------------------
使用Maven的最大好处在于:生成工程骨架和管理JAR包依赖。

Maven自带了很多的工程骨架,想自定义骨架可以使用交互式命令:

mvn archetype:generate

 我的是Maven 2.2.1版本,系统自带的骨架一共有41个(下面是常用的几个):

* maven-archetype-archetype 
* maven-archetype-j2ee-simple 
* maven-archetype-mojo 
* maven-archetype-portlet 
* maven-archetype-profiles
* maven-archetype-quickstart 
* maven-archetype-simple
* maven-archetype-site 
* maven-archetype-site-simple
* maven-archetype-webapp
……

当然,我们完全可以通过命令指定骨架,下面列出几常用的用法:

1)、创建普通Java项目:
mvn archetype:create -DgroupId=[your project's group id] -DartifactId=[your project's artifact id]  [-Dversion=[version id]]

mvn archetype:create -DgroupId=com.aboy -DartifactId=webmap 

 2)、创建WEB项目:
mvn archetype:create -DgroupId=[your project's group id] -DartifactId=[your project's artifact id] -DarchetypeArtifactId=maven-archetype-webapp

mvn archetype:create -DgroupId=com.aboy -DartifactId=webmap -DarchetypeArtifactId=maven-archetype-webapp  

 这里的-DarchetypeArtifactId=maven-archetype-webapp  中的maven-archetype-webapp就是上面提到的常用默认骨架之一。

1、Maven命令属性的简单说明:

    1)、archetype( 内建插件,他的create任务将建立项目骨架 ): archetype:create 

    2)、groupId 项目的java包结构:com.aboy 

    3)、artifactId 项目的名称:webmap 【工程名】

    4)、显示Maven默认设置

mvn help:effective-pom

2、生成清除Eclipse项目结构:

mvn eclipse:eclipse   
mvn eclipse:clean 

3、清理(删除target目录下编译内容)

mvn clean

 这个clean和上面的mvn eclipse:clean是不一样的,上面的清除的是.classpath和.project文件,这个是清除的target目录及其内容。

4、仅打包Web页面文件

mvn war:exploded

5、Maven的主要生命周期:
validate: 验证项目是否正确以及相关信息是否可用
compile: 编译
test: 通过junit进行单元测试
package: 根据事先指定的格式(比如jar),进行打包
integration-test: 部署到运行环境中,准备进行集成测试
verify: 对包进行有效性性和质量检查
install: 安装到本地代码库
deploy: 在集成或发布环境,将包发布到远程代码库

        创建Maven项目:mvn archetype:create
              编译源代码:mvn compile
              编译测试代码:mvn test-compile
              运行测试:mvn test
              产生site:mvn site
              打包:mvn package
              在本地Repository中安装jar:mvn install
              清除产生的项目:mvn clean

猜你喜欢

转载自lehsyh.iteye.com/blog/689675