Maven基础

1.Maven介绍
Maven的核心很简单,主要是通过插件实现项目管理和项目生命周期管理。

使用maven构建的项目都有坐标唯一标识,坐标包含groupId,artifactId,version,packaging.

groupId团体,公司,小组,组织,项目,或者其它团体。团体标识的约定是,
它以创建这个项目的组织名称的逆向域名(reverse domain name)开头。来
自 Sonatype 的项目有一个以 com.sonatype 开头的groupId,而 Apache
Software的项目有以 org.apache 开头的groupId。
artifactId在groupId下的表示一个单独项目的唯一标识符。
version一个项目的特定版本。 发布的项目有一个固定的版本标识来指向该项目的
某一个特定的版本。而正在开发中的项目可以用一个特殊的标识,这种标
识给版本加上一个“SNAPSHOT”的标记
packaging 项目的打包格式也是 Maven 坐标的重要组成部分,但是它不是项目唯一标识符
的一个部分。一个项目的groupId:artifactId:version使之成为一个独一无二
的项目;你不能同时有一个拥有同样的groupId, artifactId和version标识的
项目。 
项目的类型,默认是jar,描述了项目打包后的输出。类型为jar的项目
产生一个 JAR文件,类型为war的项目产生一个 web应用。

 

通常一个工程依赖于很多jar包,但是使用maven构建项目的jar包时,它的依赖不会被捆绑在生成的构件中,

他们只是用来编译。当用 Maven 来创建 WAR 或者 EAR,你可以配置 Maven 让它在生
成的构件中捆绑依赖,你也可以配置 Maven,使用provided范围,让它排除WAR文件中特定的依赖。

 

 

 

 

2.常用命令列表

  • 构建工程

       mvn archetype:create -DgroupId=com.taobao.upp -DartifactId=simple

               [插件名称]  [目标]   [参数]                                    [参数]

  •  

 

 


maven定义的生命周期中主要的相位如下:
validate: 验证项目是否正确以及相关信息是否可用。
compile: 编译。
test: 通过junit进行单元测试。
package: 根据事先指定的格式(比如jar),进行打包。
integration-test: 部署到运行环境中,准备进行集成测试。
verify: 对包进行有效性性和质量检查。
install: 安装到本地代码库。
deploy: 在集成或发布环境,将包发布到远程代码库。

Maven核心概念
坐标,依赖,仓库,生命周期,插件

1.坐标
坐标组成:
* groupId: com.companyname.projectname
* artifactId modulename (like project_service)
* version 1.0 (2.0 …)
* packaging jar (war …)
* classifier javadoc, jdk15
示例坐标:
com/companyname/projectname/modulename/1.0/modulename-1.0.jar

2.依赖
依赖范围是指项目所依赖的包,在什么时候被引用,例如junit,只是在测试时依赖
依赖范围(Scope):compile,test,provided,runtime
传递性依赖:如果项目依赖于一个包,而这个包又依赖于另一个包,则两个包都会被添加到项目的依赖里面。可以通过剔除依赖传递来管理。具体见Maven培训文档
依赖管理:指父项目和子项目之间的依赖管理。具体见Maven培训文档
常用的依赖分析命令:
mvn dependency:analyze
mvn dependency:tree

3.生命周期
有三套生命周期:clean,default,site,三个生命周期相互独立
生命周期前后相互依赖
clean:pre-clean -> clean -> post-clean
default:process-resources -> compile -> test -> package ->install ->deploy
site: pre-site -> site ->post-site -> site-deploy

4.多模块
* 可继承的元素
* groupId, artifactId, version. (groupId/artifactId之一必须重写)
* dependencies
* plugins
* dependencyManagement
* pluginManagement
* Reporting
* Developers & Contributors
* 子模块可任意重写父模块配置
* 目的:聚合构建,Maven build父模块的时候,会自动
build子模块
* 父模块的packaging必须为POM

5.测试
唯一的目标surefire:test与生命周期阶段test 绑定
测试报告:${basedir}/target/surefire‐reports
‐ 默认运行的测试类
‐ **/Test*.java
‐ **/*Test.java
‐ **/*TestCase.java
跳过测试
‐ mvn test ‐DskipTests
‐ mvn test ‐Dmaven.test.skip=true (同时跳过编译测试)
‐ 单独运行某个测试
‐ mvn test ‐Dtest=SquareTest
‐ mvn test ‐Dtest=List*Test
‐ mvn test ‐Dtest=SquareTest,List*Test
剔除测试
<excludes>
<exculde>../DAOTest.java</exculde>
</excludes>

6.Maven的版本规范
   1    .  3    .    4    ‐beta‐2
<主版本>.<次版本>.<增量版本>‐<限定符>
  架构      加功能    修复bug   里程碑版本
--------------------------------
--------Maven常用命令------------
--------------------------------
mvn  archetype:create -DgroupId=com.byread -DartifactId=blog
创建普通应用项目
mvn archetype:create -DgroupId=com.byread -DartifactId=blogweb -DarchetypeArtifactId=maven-archetype-webapp
创建WEB项目
mvn archetype:create -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-basic-struts -DremoteRepositories=http://static.appfuse.org/releases -DarchetypeVersion=2.0.2 -DgroupId=com.mycompany.app -DartifactId=myproject
创建appfuse项目
mvn compile
编译主程序源代码,不会编译test目录的源代码。第一次运行时,会下载相关的依赖包,可能会比较费时。
mvn test-compile
编译测试代码,compile之后会生成target文件夹,主程序编译在classes下面,测试程序放在test-classes下。
mvn test
运行应用程序中的单元测试
mvn site
生成项目相关信息的网站
mvn clean
清除目标目录中的生成结果
mvn package
依据项目生成 jar 文件,打包之前会进行编译,测试。
mvn install
在本地 Repository 中安装 jar。
mvn install -DskipTests=true
忽略单元测试,在本地 Repository 中安装 jar。
mvn eclipse:clean
清除 Eclipse 项目文件及包引用定义
mvn war:exploded
仅有页面文件发生变化时
mvn eclipse:eclipse
生成 Eclipse 项目文件及包引用定义,注意,需确保定义Classpath Variables: M2_REPO,指向本地maven类库目录。
mvn cargo:start
自行去下载相关的jboss这样的服务器,然后启动jboss(刚才mvn package install部署好的目录)
mvn install:install -file -Dfile=D:/opensource/dbunit-2.2/dbunit-2.2.jar -DgroupId=dbunit-DartifactId=junitperf -Dversion=2.2 -Dpackaging=jar
发布到本地
mvn deploy:deploy -file -DgroupId=staticComparison -DartifactId=static-comparison -Dversion=2.0 -Dpackaging=jar -Dfile=c:/staticComparison_2.0.jar -Durl=file:Y:\repo
发布到远程

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值