Maven使用手册
版本 修改日期 2011-5-18 修改人 赵蕾 修改内容 增加Archetype的使用
1、maven的安装和配置
解压apache-maven-3.0.3-bin.zip到指定目录,设置系统环境变量 M2_HOME=installpath PATH=%M2_HOME%\\bin
在console里输入mvn -version验证安装成功。
Snapshot版本的部署 1、 mvn deploy
Release 版本自动发布步骤:
1、修改POM版本为SNAPSHOT版本(首次修改版本为1.0.0-SNAPSHOT) 2、提交代码到SVN,执行mvn scm:checkin -Dmessage=a 3、准备版本发布,执行mvn release:prepare -Dresume=false
? ? ? ? ? ? ? ?
检查项目是否有未提交的代码。 检查项目是否有快照版本的依赖。
根据用户的输入将跨找版本升级为发布版。 基于修改后的Pom执行Maven构建。 提交Pom变更到SVN。
基于用户输入为代码打标签到SVN。 将代码从发布版升级为新的快照版 提交Pom变更到SVN。
4、如果发现有错误要进行回退,执行mvn release:rollback
将POM回退到release:prepare之前的状态,并提交。
注意:该步骤不会删除release:prepare生成的标签,必须手动删除。
5、如果确认无误,进行版本发布,执行mvn release:perform进行打包并部署构件到仓库。
2、maven常用命令
?
mvn compile
编译主程序源代码,不会编译test目录的源代码。第一次运行时,会下载相关的依赖包,可能会
比较费时。 ?
mvn test-compile
编译测试代码,compile之后会生成target文件夹,主程序编译在classes下面,测试程序放在test-classes下。 ? ?
? ? ?
mvn test
运行应用程序中的单元测试。 mvn clean
清除目标目录中的生成结果。 mvn package
项目进行打包,生成 jar 文件,打包之前会进行编译,测试。 mvn install
将项目输出的构件安装到本地仓库。 mvn deploy
将项目生成的构建部署到远程仓库。
mvn clean deploy -DperformRelease=true 生成并部署-Source.jar -javadoc.jar ?
mvn source:jar 生成源代码
3、maven常用插件
3.1、Release插件:动化版本发布插件
? ?
mvn release:prepare –Dresume=false –DautoVersionSubmodules=true 准备版本发布。 mvn release:rollback
回退release:prepare所执行的操作。需要注意的是,该步骤不会删除release:prepare生成的标签,必须手动删除。 ?
3.2、dependency插件
? ?
mvn dependency:tree
列出项目的依赖树,帮助分析依赖来源。 mvn dependency:copy-dependencies 拷贝依赖jar文件到~\\target\\dependency
3.3、Help插件
? ?
help:active-profiles help:effective-pom
mvn release:perform 执行版本发布。
列出当前构建中活动的Profile(项目的,用户的,全局的)。 显示当前构建的实际POM,包含活动的Profile。
? ?
help:effective-settings help:describe
打印出项目的实际settings, 包括从全局的settings和用户级别settings继承的配置
查看插件的详细信息。它不需要在项目目录下运行,但是你必须提供你想要描述插件的 groupId、artifactId和version。
如:mvn help:describe –Dplugin=org.apache.maven.plugins:maven-compiler-plugin:2.1 也可以传入插件的目标前缀(如help)如: mvn help:describe -Dplugin=compiler
4、pom.xml 说明
POM:项目对象模型Project Object Model
定义项目的基本信息,描述项目如何构建,声明项目依赖。 modelversion pom.xml 使用的对象模型版本 groupId 创建项目的组织或团体的唯一 Id artifactId 项目唯一Id, 项目名
packaging 打包扩展名(JAR、WAR、EAR) version 项目版本号
name 显示名,用于生成文档 url 组织站点,用于生成文档 description 项目描述,用于生成文档
dependency之scope 管理依赖部署,取值如下: compile 缺省值,用于所有阶段,随项目一起发布;
provided 期望JDK、容器或使用者提供此依赖。如servlet.jar; runtime 只在运行时使用;
test 只在测试时使用,不随项目发布;
system 需显式提供本地jar,不在代码仓库中查找;
5、POM优化
5.1、 优化依赖
?
依赖重复声明
找出所有被用于一个以上模块的依赖,然后将其向上移到父POM的dependencyManagement片段,在这些依赖配置被上移之后,我们需要为每个POM移除这些依赖的版本,否则它们会覆盖定义在父项目中dependencyManagement.父POM包含一个版本和一组排除配置,所有的子POM需要使用groupId和artifactId引用这个依赖。
? 创建
版本重复问题
属性 ,然后在
兄弟依赖不匹配:
为兄弟项目使用内置的项目version和groupId。
5.2、优化插件
1. 使用元素顶层POM build元素下的pluginManagement元素。 2. 通过属性来解决插件里的依赖的版本重复问题。 3. 使用Maven Dependency插件进行优化。
? ? ?
总是为你代码引用的类显式声明依赖
运行dependency:analyze,该目标分析这个项目,查看是否有直接依赖,或者一些引用了但不是直接声明的依赖。
为了进一步调查,运行dependency:tree目标,该目标会列出项目中所有的直接和传递性依赖。
4. 大部分复杂的Maven多模块项目倾向于在顶层POM中定义所有的版本。
6、Archetype
使用Maven Archetype生成项目框架。
6.1、生成一个简单的Maven项目
生成一个简单的Maven项目步骤如下:
1、 执行mvn archetype:generate; 2、 输入想要创建的项目模板编号;
3、 按照maven提示分别输入配置参数的内容
? ? ? ?
mvn archetype:generate –B \\
-DarchetypeGroupId= org.apache.maven.archetypes \\ -DarchetypeArtifactId= maven-archetype-quickstart \\ -DarchetypeVersion=1..0 \\
-DgroupId= com.hundsun.jres.common \\ -DartifactId= com.hundsun.jres.common.cep \\ -Dversion=1.0.0-SNAPSHOT \\
-Dpackage=com.hundsun.jres.common.cep
groupId:想要创建项目的groupId; artifactId:想要创建项目的artifactId; version:想要创建项目的version package:想要创建项目的默认Java包名
填写完成后,Archetype插件就会自动生成项目的框架。 批处理方式使用Archetype生成项目:
6.2、常用Archetype模板
1、110:mave-archetype-quickstart 2、mave-archetype-webapp
6.3、自定义项目模板
为新建标准化的工程框架提供了方便。为自定义一套工程框架标准,可参考以下步骤操作:
1、按普通方式,建立好所需的Eclipse工程(含基本示例代码) 2、运行以下命令,生成archetype源码
mvn archetype:create-from-project 手工调整相关archetype源码; 需进行变量替换的文件;
需在archetype-metadata.xml中开启filtered=\
4、在target\\generated-sources\\archetype 目录,运行mvn clean deploy 命令,发布到远程仓库 5、使用archetype时,Eclipse插件支持似乎有问题,需在命令行下执行:
mvn archetype:generate -DarchetypeCatalog=http://maven.yihaodian.cn/content/repositories/snapshots/ 依照提示,输入相关内容。
3、进入target\\generated-sources\\archetype\\src\\main\\resources 目录,
用maven创建java项目的步骤:
第一步:mvn archetype:create -DgroupId=org.snowrain -DartifactId =product -Dversion=SNAPSHOT_0.0.1
第二步:切换到product目录 mvn eclipse:eclipse