maven2.0学习笔记
?
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>
从以上pom.xml文件可以看出,定义一个外部依赖(external dependencies)至少需要4个元素:groupId, artifactId, version, and scope。对于groupId, artifactId, version的意思,和前面我们在创建工程时提到的这几个元素的意义相同,这里就不再重复介绍,scope元素指出你的工程如何使用依赖,并且它的值有compile,test和runtime等等。想要了解更多的依赖说明的信息,请看
http://maven.apache.org/maven-model/maven.html
要想了解完整的依赖机制,请看
http://maven.apache.org/guides/introduction/introduction-to-dependency-management.html
?
有了这些依赖信息,Maven将能在工程构建时引用依赖。
引用的过程是:
首先,在本地仓库(默认的本地仓库地址为:~/.m2/repository)中查找此依赖是否存在。
再次,如果在本地仓库中未发现,则在远程仓库中下载此依赖,并下载到本地仓库中。
最后,通过以上两个步骤就能找到依赖。如果远程仓库无法访问,则可以设置其他远程仓库。具体请看
http://maven.apache.org/guides/introduction/introduction-to-repositories.html
?
一个简单的例子。比如我们要添加一个log4j到我们的工程中。
首先.需要了解log4j的groupId, artifactId, and version信息。可在google上搜索“site:www.ibiblio.org maven2 log4j”。这样在搜索结果里可以找到/maven2/log4j/log4j (or /pub/packages/maven2/log4j/log4j)这样的目录,在这个目录中有一个文件叫做maven-metadata.xml。这个文件内容如下所示:
<metadata>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.1.3</version>
<versioning>
<versions>
<version>1.1.3</version>
<version>1.2.4</version>
<version>1.2.5</version>
<version>1.2.6</version>
<version>1.2.7</version>
<version>1.2.8</version>
<version>1.2.11</version>
<version>1.2.9</version>
<version>1.2.12</version>
</versions>
</versioning>
</metadata>
这样我们能找到groupId为log4j,artifactId为log4j,version当然要用最新的,选择1.2.12。scope我们设置为compile。
这样我们使用mvn compile 编译工程时,会看到mvn下载了log4j到我们的本地仓库。
?
完全支持的配置管理工具
CVS
Subversion
Perforce
StarTeam
部分支持的配置管理工具
ClearCase
File system
Visual Source Safe
不支持的配置管理工具
Accurev
Aegis
Arch
BitKeeper
ClearCase Multisite
CM Synergy
Code Co-op
Darcs
Monotone
OpenCM
PureCM
Serena PVCS / Dimension
Starteam Enterprise
Svk
Vesta
?
当你选中了上面的一个配置管理工具,你就可以利用Maven 2.x的插件或者集成管理工具进行配置管理了。
持续集成工具continuum
continuum是Maven的一个子项目。他是一个构建基于java的工程的持续集成服务器。他支持以下多种工程类型:
Maven 1
Maven 2
Ant
Shell scripts
continuum有以下特征
紧密整合Maven 2.x
紧密整合Maven SCM
Subversion
CVS
Starteam
Clearcase
Perforce
更易用的基于网络的设置和界面
基于Quartz(Quartz-based)的时间计划表设置
添加新项目十分方便
邮件通知
其他IM通知
IRC
Jabber
MSN
责备机制(Blame Mechanism)
下载:
在以下连接处下载此软件
http://maven.apache.org/continuum/download.html
安装:
Windows 2000/XP
解压缩continuum-1.0.2-bin.zip到你希望安装Continuum 1.0.2的所在目录。这里假定你安装在C:/Program Files/Apache Software Foundation/continuum-1.0下。
运行:
bin/linux/run.sh 如果是UNIX平台
bin/solaris/run.sh 如果是Solaris平台
bin/win32/run.bat 如果是Windows平台
bin/macosx/run.sh 如果是MacOS X平台.
bin/plexus.sh 如果是其他平台
当服务器启动成功后,打开浏览器访问:
http://localhost:8080/continuum/
?
注意:由于continuum判断一个工程是否构建成功,是使用一个命令行返回值。而windows平台的用户,这个返回值有问题。因此需要修改以下maven 2的bin/mvn.bat文件。这里可以直接从以下地址下载修改后的文件替换掉即可。
http://maven.apache.org/continuum/scripts/mvn.bat
添加一个项目到continuum
要添加一个maven 2的项目到continuum,需要写入一个pom url或者导入一个pom.xml,当然导入的这个pom.xml文件中包含了continuum需要的各种信息。
我们来看看导入的pom.xml文件中具体需要包含哪些项:
配置管理信息(The SCM information)
<scm>
<connection/>
<developerConnection/>
<tag/>
<url/>
</scm>
?
开发者信息(The developers)
<ciManagement>
<system>continuum</system>
<notifiers>
<notifier>
...
</notifier>
</notifiers>
</ciManagement>
?
集成后所有的通知人信息(The notifiers)
<notifier>
<type>mail</type>
<configuration>
<address>dev@maven.apache.org</address>
</configuration>
<notifier>
?
<notifier>
<type>irc</type>
<configuration>
<host>irc.codehaus.org</host>
<port>6667</port>
<channel>#maven</channel>
</configuration>
</notifier>
构建工程
按照定制的时间构建
点击本项目上的build按钮进行构建。
发布配置方法
要发布(Releases)一个项目,需要在pom.xml和setting.xml中分别配置。
在pom.xml中
<distributionManagement>
<repository>
<id>mycompany-repository</id>
<name>MyCompany Repository</name>
<url>scp://repository.mycompany.com/repository/maven2</url>
</repository>
</distributionManagement>
在setting.xml中
<settings>
.
.
<servers>
<server>
<id>mycompany-repository</id>
<username>jvanzyl</username>
<!-- Default value is ~/.ssh/id_dsa -->
<privateKey>/path/to/identity</privateKey> (default is ~/.ssh/id_dsa)
<passphrase>my_key_passphrase</passphrase>
</server>
</servers>
.
.
</settings>
通过以上的设置,项目将可以发布到远程仓库,远程服务器。
项目发布现在支持scp,ftp和scpexe等方式。
Setting.xml文件
这个文件是一个maven的配置文件。
他有下面的功能:
配置本地仓库
配置访问网络的代理服务器
安全和部署的设置。
为仓库设置景象
想要了解更多这个文件的信息可以参考一下以下文章:
http://maven.apache.org/guides/mini/guide-configuring-maven.html
运行发布的命令
mvn deploy
?
当有了以上的工程目录,无论是webapp工程,还是app,我们都希望在集成开发环境中开发。Maven如何和IDE集成。现在我们就来进行讲解。
首先要让eclipse知道Maven 2的repository(仓库)的路径。
因此要设置一个M2_REPO的变量为classpath。
可以使用命令行的方式来设置:
mvn -Declipse.workspace=<path-to-eclipse-workspace> eclipse:add-maven-repo
还可以在eclipse中定义一个新的classpath变量通过在eclipse的菜单上选择Window> Preferences. 选择Java > Build Path > Classpath Variables page.
生成eclipse的工程文件。
使用命令行
mvn eclipse:eclipse
这样通过在eclipse的菜单上选择File >Import >Existing Projects into Workspace,就可以将工程导入eclipse中。
?
通过以上2个步骤,我们就可以利用eclipse来进行开发工作了。
Eclipse插件mavenide
同时在eclipse中我们可以下载一个maven的插件,用来辅助eclipse进行maven工程的开发工作。这个插件名称叫做mavenide。
这个插件可使用以下更新站点:http://m2eclipse.codehaus.org/
并且非常方便的是,这里还提供了一个flash的演示来介绍如何安装此插件,这个flash演示的观看地址在:
http://m2eclipse.codehaus.org/Installing_Maven_2.0_plugin_for_Eclipse.html
要正常使用此插件请注意以下问题:
eclipse使用3.1或以上版本。
Mavenide的插件为0.0.5不要安装错误了。
通过笔者在安装好此插件的一些使用后,看到了此插件的以下一些特性。
可以方便的添加依赖。
在编辑完pom.xml文档后,会自动检查此文档的格式是否正确。
可以将mvn的一些命令通过扩展工具的方式在eclipse中轻松执行。
文章来自:http://blog.csdn.net/srx/article/details/666204