maven使用
- maven手动创建
- maven常用的命令
- maven生命周期介绍-clean-default-site
- maven-pom文件简介
- maven仓库
- maven依赖
- maven聚合与继承
- maven私服
-
maven测试
一:maven手动创建
- 使用命令行:mvn archetype:generate 创建,其实我们平时使用IDEA的时候就和这个差不多的。
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-WebApp -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false -DarchetypeCatalog=local
- -DgourpId: 组织名,公司网址的反写 + 项目名称
- -DartifactId: 项目名-模块名
- -DarchetypeArtifactId: 指定 ArchetypeId,maven-archetype-quickstart,创建一个简单的 Java 应用
- -DinteractiveMode: 是否使用交互模式
二:常用的命令
1:mvn compile:编译源代码; mvn test-compile :编译测试代码
2:mvn test:运行测试,编译源代码并运行测试代码。
3:mvn package:打包,我试着的时候打了一个war包。
4:mvn install:将jar包部署到本地,比如两条日志中:
[INFO]Installing /home/sysadmin/mavnhomework/my-WebApp/target/my-WebApp.war to /home/sysadmin/.m2/repository/com/mycompany/app/my-WebApp/1.0-SNAPSHOT/my-WebApp-1.0-SNAPSHOT.war
[INFO] Installing /home/sysadmin/mavnhomework/my-WebApp/pom.xml to /home/sysadmin/.m2/repository/com/mycompany/app/my-WebApp/1.0-SNAPSHOT/my-WebApp-1.0-SNAPSHOT.pom
5:mvn deploy 远程上传jar
6:mvn clean 清除产生的项目
7:mvn help:effective-pom 窥探SuperPom
8:mvn dependency:tree maven依赖树
9:mvn clean package -Pdev -Dmaven.test.skip=true 打包时候过滤dev环境的test
三:生命周期
https://www.runoob.com/maven/maven-build-life-cycle.html 这个了解一下
四:pom.xml文件和仓库简单介绍
以project开头和结尾,定义命名空间,编码格式等
依赖的父pom(mvn help:effective-pom )
groupId 属于项目组,一般是公司 <groupId>com.mycompany.app</groupId>
atifactId 定义当前maven项目组中唯一的ID <artifactId>my-WebApp</artifactId>
version指定了当前项目额版本号 SNAPSHOT快照的意思 项目还在开发中不是稳定版本的意思 <version>1.0-SNAPSHOT</version>
packaging:打包方式 <packaging>war</packaging>
modelVersion指明当前pom模型的版本 maven2和3只能是这个<modelVersion>4.0.0</modelVersion>
name声明了一个对于用户更友好的项目名称,可写可不写<name>my-WebApp Maven Webapp</name>
finalname 项目打包名称<finalName>my-WebApp</finalName>(在build中定义)
profile:选择相应的环境,beta,线上环境选择(在build中定义)
仓库有两个版本:一个是不稳定的、处于开发中的版本:snapshot。稳定版本:release
本地仓库就是respository.可以再setiing.xml可以修改自己本地仓库<localRepository>目录</localRepository>
中央仓库是安装maven中的lib/maven-model-builder-3.x.x.jar
五:maven依赖特性
依赖:
type:依赖类型
scope:依赖范围 compple 编译依赖范围默认的。system系统依赖范围。import导入依赖范围。
test测试依赖范文,比如单元测试使用,打包部署是不是使用。
provided:已提供依赖范围,打包发布不适用,jdk已经提供好。
runtime:运行时依赖范围,运行时使用。
optional:依赖是否可选
exclusions:排除传递依赖
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies>
依赖冲突解决:路径优先原则;
指定在dependencyManagement:
<dependencyManagement>
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> </dependency> </dependencies>
</dependencyManagement>
六:maven继承与聚合
- 聚合:能够使用一个命令同时构建多个模块
将两个子工程用modules引入:
<modules>
<module>子工程pom</module>
<module>子工程pom</module>
</modules>
<packaging>pom</packaging>
- 继承:生命父pom供子pom继承
聚合模块和继承关机中的父模块除了pom之外没有实际的内容。
七:作业
- 使用archetype插件生成一个webapp项目。
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-WebApp -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false -DarchetypeCatalog=local
- 开发一个父子工程项目,并能够正确构建,添加单元测试代码,Main方法。要求:
继承公司的父pmo(11bee-supom-generic),要求用当前最新的版本。提示,可以去nexus.corp.11bee.com看目前存在的版本。
使用properties占位符修改spring各组件的版本为你想指定的版本。
有依赖管理(dependencyManagement)。 - 使用assembly插件把依赖的所有jar包打到同一个包里面。
可以直接在上面工程的pom中增加。
- 使用archetype插件生成一个webapp项目。
- 使用mvn assembly:assembly