Maven 2 简明学习指南(2)
项目文件:pom.xml
重要元素:
元素名 | 含义 |
project | maven 项目文件的最顶层的元素(根元素)。 |
modelVersion | 本POM所定义的项目或者项目组的版本号。此版本号一般不经常变动。 |
groupId | 项目组的的唯一标识。在maven管理的项目中,一般是管理一群项目model,groupid一般代表了这个项目群组。 例如org.apache.maven.plugins一般被设计为所有maven插件的groupid |
artifactId | 一个项目的唯一标识。此名字一般也在打包时,作为的包名字的前缀,一般的包名字为: <artifactId>-<version>.<extension>,例如: myapp-1.0.jar |
packaging | 此元素用来定义项目在打包时的类型,例如jar、war、ear等等。默认值为jar。 |
Name | 此元素用来定义项目的名称,这个名称一般主要用在项目产生的document中。 |
url | 此元素用来定义在什么网站上可以看到这个项目,这个名称一般主要用在项目产生的document中。 |
description | 此元素用来对这个项目作简要的描述,这个名称一般主要用在项目产生的document中。 |
依赖的定义:
1. 对jar包的依赖:
<dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6</version> <type>jar</type> <scope>runtime</scope> </dependency> |
备注:这个jar一般在本地repository中。并有特殊的版本标记,会对应到指定的版本。
2. 项目之间的依赖:
<dependency> <groupId>com.bankcomm.crms</groupId> <artifactId>crms-biz-task</artifactId> <version>1.0-SNAPSHOT</version> </dependency> |
依赖范围(Dependency Scope)
常用的依赖范围有三种 compile、test、runtime。
Compile 此依赖指明在classpath中可以得到这个jar。把这个classpath既包括运行时的classpath也包括编译时的classpath。当未指定scope时,scope默认是compile。
Test 此依赖指明该构件在项目正常的应用中不需要,只是用在项目测试用例的变成和执行过程中
Runtime 此scope值指明该构件在运行时的classpath中,不在编译时的classpath中。
distributionManagement
当开发人员想在作deploy动作时,deploy到远程repository中时。需要用distributionManagement标签指定远程repository。
<!-- Enabling the use of FTP --> <distributionManagement> <repository> <id>ftp-repository</id> <url>ftp://repository.mycompany.com/repository</url> </repository> </distributionManagement> <build> <extensions> <extension> <groupId>org.apache.maven.wagon</groupId> <artifactId>wagon-ftp</artifactId> <version>1.0-alpha-3</version> </extension> </extensions> </build> |
说明:
<build>…</build>之间用来指定在build时所要用到的插件。
<distributionManagement>…</distributionManagement>用来定义需要deploy到远程repository。其中的ID要和setting.xml定义server相对应。因为在server中定义关于这个远程deploy环境的权限验证和安全方面的信息,例如 用户名和密码。
创建maven项目
1. 创建单一的maven项目:
例如:
mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app |
执行成功后,将在当前目录产生项目文件: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>Maven Quick Start Archetype</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> |
生成的目录结构如下:
my-app |-- pom.xml `-- src |-- main | `-- java | `-- com | `-- mycompany | `-- app | `-- App.java `-- test `-- java `-- com `-- mycompany `-- app `-- AppTest.java |
2. 创建包含多个modules的maven项目。
举例说明:
我们要创建的目录结构如下:
+- pom.xml +- my-app | +- pom.xml +- my-webapp | +- pom.xml |
所以我们首先在父层目录创建文件pom.xml.
<project> <modelVersion>4.0.0</modelVersion> <groupId>com.mycompany.app</groupId> <version>1.0-SNAPSHOT</version> <artifactId>app</artifactId> <packaging>pom</packaging> <modules> <module>my-app</module> <module>my-webapp</module> </modules> </project> |
其他命令
命令 | 功能 |
mvn compile | 编译 |
mvn test | 执行所有的test用例 |
mvn test-compile | 编译所有的test用例 |
mvn package | 编译后打包 |
mvn install | 将编译和打包好的文件发布到本地repository |
mvn idea:idea mvn eclipse:eclipse | 创建项目文件,如果要创建eclipse项目文件。用mvn eclipse:eclipse |
在命令行下操作很痛苦,要自己编写很多代码,很不方便,下面介绍基于Eclipse的Maven插件的使用,可以大大提高效率:
首先到http://maven.apache.org/eclipse-plugin.html 下载最新的插件,安装到Eclipse,具体安装过程很简单,这里就不说了,安装好后重起Eclipse,打开windows-->preferences在左边的菜单树里找到Maven配置本地储藏室路径,不改默认在C:Documents and Settings%username%.m2 其他保持默认就可以了 应用后保存设置,如图:
新建工程MyProject,在工程上点鼠标右键在右键菜单选择 Maven 2 --> Enable弹出界面如图:
点完成,将会在工程的根目录产生一个pom.Xml的配置文件,然后我们开始添加我们需要使用到的jar包,还是在工程名上点鼠标右键,在右键菜单中选择Maven 2 --> Add Dependency 弹出界面如图:
如果相应的jar版本在本地储藏室没有找到,Maven将通过互联网下载相应版本的jar文件到本地储藏室并复制一份到lib目录下。
一些高级应用请查看http://maven.apache.org/guides/index.html 上的详细说明,介绍本书《Maven A Developers Notebook》是基于Maven 1 的,不过很多都可以借鉴过来,很好的书。


