Maven初学笔记快速入门

来源:互联网 发布:java中的md5怎么解密 编辑:程序博客网 时间:2024/05/16 06:54

2014.4.3

Maven是一个据说比ant好用的项目管理工具(尽管我也还没学ant...),maven单词的意思是内行、专家,有必要学习一下了。

与以往各种找中文资料学习新知识的方式不同,这次我要去官网看第一手教程了,我先选择了Getting Started in 5 Minutes,快速入门。

环境需求:需要jdk1.6以上

目前Maven的最新版本是3.2.1,下载好解压后有一个apache-mven-3.2.1的文件夹,设置环境变量,window下用Winkey+Pause键选择高级系统设置,key是M2_HOME,value是路径(路径最后不要带'\'),然后在添加一个M2,值是%M2_HOME%\bin。

打开cmd(WinKey+r,,输入cmd回车),输入mvn  --version,若有如下类似信息则表示配置成功



(Windows防火墙或一些杀毒软件可能会影响Maven正常工作)

创建一个用于放置Maven project的文件夹,并在cmd中cd 到该目录,输入

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
,第一次安装Maven是会花费若干时间,期间它在下载一些文件。下载完之后,文件夹下多了一个my-app文件夹,文件夹名是刚才的命令中的artifaceId决定的(artifact的有道翻译是人工制品,手工制品)。
my-app中是如下的文件结构

src/main/java文件夹存放project的源代码,src/test/java文件夹下存放测试代码,app文件夹中存放的是一个输出Hello World!的App.java文件,pom.xml文件是project's Project Object Model(POM)直译是项目对象模型。
pom.xml文件是项目的核心配置文件。
POM可以非常大足以可以把用户吓跑,但是我们在很刚开始学习时还不必掌握所有的那些纷繁难懂之处。
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.mycompany.app</groupId>  <artifactId>my-app</artifactId>  <packaging>jar</packaging>  <version>1.0-SNAPSHOT</version>  <name>my-app</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></project>
现在分析一下刚才
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
这个命令中做了什么,我们执行了生成 Maven目标原型操作(Maven goal archetype:generate),并且加了一系列的参数。以archetype为前缀的是包含目的的插件(额,勉强翻译)。这个目的创建了一个简单的基于一种archetype(原型)的项目。可以说一个插件是可以完成一种目的的集合(Suffice it to say for now that a plugin is a collection of goals with a general common purpose)。比如jboss-maven-plugin,目的就是处理各种jboss 条目项目("deal with various jboss items")。
下面来建立一个项目cd到my-app中输入
mvn package
运行以后控制台输出一坨东西,
表示Build成功
这条命令比第一条简单很多只有一个 -package,这个命令不是一个goal,而是一个阶段(phase)。phase是建造生命周期的一步,也就是说建造生命周期是一些phase的有序序列,建造生命周期包括validate、compile、test、package、integration-test、verify、install、deploy。当我们提供了phase,Maven就会执行序列中的phase.例如,如果我们执行编译阶段(compile phase),实际上我们得到的执行是1.validate(验证) 2. generate-sources(生成源文件) 3. process-sources (处理源文件)4 . genereate-resources (生成资源)5. process-resources (处理资源) 6. compile(编译)
现在我们可以测试一下刚刚编译并打包好的jar
java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App
输出了令人欢喜的

我们可以在my-app文件夹下看到Maven帮我们生成的一个target文件夹,
class 文件夹里面是原项目生成的class文件,
maven-archiver 里面有一个pom.properties,是Maven的描述文档

surefire-reports里有一些报告
test-classes 是测试的class文件
my-app-1.0-SNAPSHOT.jar是打包好的jar

0 0