7月10日 第八天

         今天接触了下项目,发现我以前使用maven简直就是白痴式的用法,一起觉得maven就是用来添加jar包的,具体为什么要这么添加我自己也说不清楚。今天看了看公司怎么样使用maven,真是汗。然后就重新学习了下maven了。

          基本原理:

                               maven的基本原理很简单,采用远程仓库和本地仓库以及一个pom.xml的配置文件,将在pom.xml中配置的jar包从远程仓库下载到本地仓库,同时采用现在流行的软件体系架构,只保留最小的核心,其余功能都通过插件的形式提供,在执行maven任务的时候,他会自动下载所需要的插件。

          项目管理:

                                Maven一个重要特性是定义了项目的标准模板,可以通过加载插件去创建特定的模板。

                                比如说建立一个普通项目  ,maven默认使用maven-archetype-quickstart模板,只需要写下下面的命令:    

   1:   mvn archetype:create 
   2:  -DgroupId=packageName 

3: -DartifactId=projectNam

                                创建一个web项目,需要使用maven-archetype-webapp模板,命令如下:

   1:  mvn archetype:create 
   2:  -DgroupId=packageName    
   3:  -DartifactId=webappName 
   4:  -DarchetypeArtifactId=maven-archetype-webapp    

文档和报告:

                        使用mvn site可以快速生成项目站点,apache很多开源项目站点都采用maven生成,会出现built by maven字样的图标。
而maven提供的针对如junit,checkstyle,pmd等的插件,能够方便的进行测试和检查并能直接生成报告。使用都很简单。

类库管理:

                          Maven一个很重要的特色就是类库管理。通过在pom.xml中定义jar包版本和依赖,能够方便的管理jar文件。以下是一个简单的jar定义片断

   1:  <dependency>                                                                       
   2:        <groupId>org.hibernate</groupId> 
   3:        <artifactId>hibernate</artifactId> 
   4:        <version>3.1</version> 
   5:        <type>jar</type> 
   6:        <scope>runtime</scope> 
   7:   </dependency>
                        

               这个片断告诉我们,依赖的jar包groupId为org.hibernate,artifactId为hibernate,版本为3.1,scope为runtime。在实际项目中,会将M2_REPO_(maven{}本地仓库地址_)/ org/hibernate / hibernate /3.1/ hibernate -3.1.jar放入classpath。
同时maven会通过pom.xml管理jar包间的依赖。比如上面的hibernate-3.1.jar同级目录肯定会有一个hibernate -3.1.pom,在这个pom文件中指定了这个jar对其它一些jar的依赖。而这个pom文件是远程仓库提供,无需进行修改,执行maven相关命令就会自动根据相关依赖去下载jar包。这样只需定义对hibernate的依赖而无需关心相关jar,在构建项目上方便了很多。
因为pom文件对jar的管理,也产生了一个很吸引人的特性:项目文件很小。以往一个web项目中,jar文件都要放入WEB-INF/lib下,并放入cvs(svn)中,很容易就达到几十M。而通过maven,只需一个pom.xml,在执行mvn eclipse:eclipse时再去远程仓库下载,项目文件一般只需几百K。

             发布管理:

                                使用maven可以方便的进行项目发表管理。在项目开发到一定阶段,可以使用mvn package打包,它会自动先运行mvn test,跑所有的testcase,只有全部通过才能正确打包。生成的war包(如果项目的packaging为war)在target目录下。这个war包与使用ant脚本生成一样,但无需一行脚本,这也是maven对比ant的优势之一。使用mvn install将编译和打包好的文件发布到distributionManager指定的远程repository。使用mvn deploy可以自动管理项目版本。

           使用maven:

                                    安装配置:

Maven的安装很简单:
1.         从apache网站上下载maven安装包,实际上就是个压缩文件。将其解压到你想要存放maven的目录中。在这里假设你将maven解压到C:\Program Files\Apache Software Foundation\maven-3.0.4中。
2. C:\Program Files\Apache Software Foundation\maven-3.0.4\bin设到你的系统环境变量%PATH%中。
3. 同时确保你已经将你的JDK安装目录设为java_home系统变量。
4.         打开个命令行窗口,运行mvn --version验证是否安装成功。
5.         如果使用eclipse,在运行mvn eclipse:eclipse生成eclipse项目文件后,需加入M2_REPO到Classpath Variables中,指向本地repository,例如:C:/Documents and Settings/Owner/.m2/repository。

                               基本使用流程

Maven的基本使用如下:

           mvn -version(确认maven安装成功) -------》 mvn archetype:create(创建maven项目) -------》   mvn  eclipse:eclipse 与IDE结合

           mvn test (自动测试说有的testcase)----------》 mvn package (打包) --------》 mvn install (发布jar) ---------》mvn deploy (发布项目)

                              生命周期的引入:

在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。

 

Dependency Scope

在POM 4中,<dependency>中还引入了<scope>,它主要管理依赖的部署。目前<scope>可以使用5个值:

  • compile,缺省值,适用于所有阶段,会随着项目一起发布。
  • provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。
  • runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。
  • test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。
  • system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。

转载于:https://www.cnblogs.com/Qbright/archive/2012/07/10/2585369.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值