7月10日 第八天

it2025-04-14  6

         今天接触了下项目,发现我以前使用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

最新回复(0)