Maven
Maven是一种项目管理工具,基于POM(项目对象模型),帮助实现管理依赖,以及项目的构建、发布、部署、生成报告等。
1. 常用命令:
# 查看版本
mvn -version (-v)
# 编译项目
mvn compile
# 运行单元测试
mvn test
# 项目打包
mvn package
# 清理项目(删除target目录)
mvn clean
# 安装打包好的项目jar包到仓库
mvn install
# 构建项目目录
mvn archetype:generate [-DgroupId=组织名 -DartifactId=项目名 -Dversion=版本 -Dpackage=包]
2. Maven 生命周期:
- clean 清理
- default 默认,默认生命周期又包含7个步骤:
- validate 验证
- compile 编译
- test 测试
- package 打包
- verify 核准,部署前验证
- install 安装,安装到仓库
- deploy 部署,部署服务器
- site 发布,发布网站,生成报告
3. Maven配置
Maven可以在settings.xml文件中进行配置 settings.xml文件一般存在于两个位置:
-
全局配置: ${MAVEN_HOME}/conf/settings.xml
-
用户配置: 用户目录/.m2/settings.xml
本地仓库:
<localRepository>本地仓库路径</localRepository>
远程仓库:
<mirrors>
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
</mirrors>
项目构建配置:
<profile>
<id>jdk1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
4.依赖范围
:
- compile 编译阶段,默认,在编译测试运行时起作用
- test 测试,编译和测试时起作用
- provided 已提供, 运行环境已提供该依赖,如Tomcat提供Servlet依赖
- runtime 运行时,测试和运行起作用
- system 由系统提供
- import 用于导入
5. 排除依赖
除了依赖Maven自带的方案,我们还可以自己排除不需要的依赖
如:在spring-jdbc中排除spring-core
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.1.12.RELEASE</version>
<!-- 需要排除的依赖: -->
<exclusions>
<exclusion>
<artifactId>spring-core</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
</exclusions>
</dependency>
6. 手动构建一个maven项目:
-
新建文件夹作为用来存放项目目录
-
在当前目录打开cmd
-
在命令行输入以下命令
mvn archetype:generate -DgroupId=top.iuoly.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
参数说明:
- groupId:组织名,公司域名的反写+项目名
- artifactId:项目名-模块名
- archetypeArtifactId:指定的ArchetypeId。
- maven-archetype-quickstart,创建一个简单的java应用
- maven-archetype-webapp,创建一个web应用
- interacticeMode:是否使用交互模式
maven提供的41个骨架原型分别是:
1: appfuse-basic-jsf (创建一个基于Hibernate,Spring和JSF的Web应用程序的原型)
2: appfuse-basic-spring(创建一个基于Hibernate,Spring和Spring MVC的Web应用程序的原型)
3: appfuse-basic-struts(创建一个基于Hibernate,Spring和Struts 2的Web应用程序的原型)
4: appfuse-basic-tapestry(创建一个基于Hibernate,Spring 和 Tapestry 4的Web应用程序的原型)
5: appfuse-core(创建一个基于Hibernate,Spring 和 XFire的jar应用程序的原型)
6: appfuse-modular-jsf(创建一个基于Hibernate,Spring和JSF的模块化应用原型)
7: appfuse-modular-spring(创建一个基于Hibernate, Spring 和 Spring MVC 的模块化应用原型)
8: appfuse-modular-struts(创建一个基于Hibernate, Spring 和 Struts 2 的模块化应用原型)
9: appfuse-modular-tapestry (创建一个基于 Hibernate, Spring 和 Tapestry 4 的模块化应用原型)
10: maven-archetype-j2ee-simple(一个简单的J2EE的Java应用程序)
11: maven-archetype-marmalade-mojo(一个Maven的 插件开发项目 using marmalade)
12: maven-archetype-mojo(一个Maven的Java插件开发项目)
13: maven-archetype-portlet(一个简单的portlet应用程序)
14: maven-archetype-profiles()
15:maven-archetype-quickstart()
16: maven-archetype-site-simple(简单的网站生成项目)
17: maven-archetype-site(更复杂的网站项目)
18:maven-archetype-webapp(一个简单的Java Web应用程序)
19: jini-service-archetype(Archetype for Jini service project creation)
20: softeu-archetype-seam(JSF+Facelets+Seam Archetype)
21: softeu-archetype-seam-simple(JSF+Facelets+Seam (无残留) 原型)
22: softeu-archetype-jsf(JSF+Facelets 原型)
23: jpa-maven-archetype(JPA 应用程序)
24: spring-osgi-bundle-archetype(Spring-OSGi 原型)
25: confluence-plugin-archetype(Atlassian 聚合插件原型)
26: jira-plugin-archetype(Atlassian JIRA 插件原型)
27: maven-archetype-har(Hibernate 存档)
28: maven-archetype-sar(JBoss 服务存档)
29: wicket-archetype-quickstart(一个简单的Apache Wicket的项目)
30: scala-archetype-simple(一个简单的scala的项目)
31: lift-archetype-blank(一个 blank/empty liftweb 项目)
32: lift-archetype-basic(基本(liftweb)项目)
33: cocoon-22-archetype-block-plain([http://cocoapacorg2/maven-plugins/])
34: cocoon-22-archetype-block([http://cocoapacorg2/maven-plugins/])
35:cocoon-22-archetype-webapp([http://cocoapacorg2/maven-plugins/])
36: myfaces-archetype-helloworld(使用MyFaces的一个简单的原型)
37: myfaces-archetype-helloworld-facelets(一个使用MyFaces和Facelets的简单原型)
38: myfaces-archetype-trinidad(一个使用MyFaces和Trinidad的简单原型)
39: myfaces-archetype-jsfcomponents(一种使用MyFaces创建定制JSF组件的简单的原型)
40: gmaven-archetype-basic(Groovy的基本原型)
41: gmaven-archetype-mojo(Groovy mojo 原型)