Maven的构建文件是pom.xml,(P roject O bject M odel ,项目对象模型),相当于ant的build.xml。
在成功安装Maven3后,可以在dos界面,运行命令:
mvn archetype:generate
这个命令会生成一个标准的Maven项目骨架。其中有些选项要输入,可参照下面的pom.xml文件,或者直接回车,选择默认。
现在看看一个简单的pom.xml文件:
<?xml version="1.0" encoding="UTF-8"?> <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.wole.chow</groupId> <artifactId>helloworld</artifactId> <version>1.0-SNAPSHOT</version> <name>Maven Hello World Project</name> </project>
<modelVersion>元素对Maven2和3来说,都是4.0.0。
<groupId>定义了项目属于哪个组,一般来说,名字是com.companyName.projectName。
<artifactId>,翻译为构件Id,定义了该组中唯一的Id。
<version>定义了项目的版本号。
<name>,可选的,声明一个对用户更友好的名称。
说明:<groupId>,<artifactId>,<version>三个元素,在Maven中组成一个坐标,唯一地确定一个构件(jar文件)。
项目主代码默认目录是:src/main/java,在该目录下的文件会打包成jar。一般来说,项目中 Java 类的包都应该基于项目的 groupId 和 artifactId ,这样更加清晰,更加符合逻辑,也方便搜索构件或者 Java 类。如上述的pom,在该目录下应该创建com.wole.chow.HelloWorld.java类。
项目测试目录:src/test/java,在Maven中,项目主代码与测试代码是分开的,使结构清晰。
在上述的pom.xml的<project>标签内加入以下的xml代码,
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.7</version> <scope>test</scope> </dependency> </dependencies>
上面的代码是增加junit类库的依赖,并限定只能在test的范围内使用。同样的<groupId>,<artifactId>,<version>三个元素唯一地确认了一个jar文件。在重新compile项目时,maven会到中心仓库找到该jar文件。中心仓库的地址:http://repo1.maven.org/maven2/
命令解析:
mvn clean : 清理(删除)输出目录 target,target目录是maven对项目构建的文件的默认输出目录。一般执行compile,test,package,install等命令时要先执行clean命令。例如:mvn clean compile
mvn compile : 编译项目主代码到target的classes目录中。
mvn test : 编译测试代码,但在 Maven 执行测试( test )之前,它会先自动执行项目主资源处理,主代码编译,测试主资源处理,测试代码编译等工作,这是 Maven 生命周期的一个特性。maven运行测试是通过一个叫surefire的插件,这插件可以显示一些统计信息。
mvn package : 打包,默认是生成jar文件。jar文件会生成在target目录里,文件名是 " <artifactId>-<version>.jar ",上述pom,就会生成 helloworld-1.0-SNAPSHOT.jar的文件。
mvn install : 安装,就是把Jar文件放入本地的本地仓库,install 成功后,别的项目就可以直接引入这个jar。从dos窗口可以看到类似的输出信息:
install sth to xxx\.m2\repository\com\wole\chow\helloworld\ 1.0 -SNAPSHOT\hello-world- 1.0 -SNAPSHOT.jar
p.s : 如果在官方的中心仓库找不到指定的Jar文件,可以自己添加本地的jar到本地的repository里,命令如下:
mvn install:install-file -Dfile=pathToMongo\mongo-2.2.jar -DgroupId
=com.wole.mongo -DartifactId=mongo -Dversion=2.2 -Dpackaging=jar
这样在自己项目的pom.xml里添加对其引用就可以了,如下:
<dependency> <groupId>com.wole.mongo</groupId> <artifactId>mongo</artifactId> <version>2.2</version> </dependency>
如果要生成可运行的jar文件,就要指定main函数,可增加:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.wole.chow.HelloWorld
</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
增加的是一个插件,插件在pom中的位置应该是<project><build><plugins>中。
上述所有的命令在eclipse安装了m2eclipse插件后,完全可以在eclipse中执行的。