一、Maven的基本概念与安装
http://www.cnblogs.com/xdp-gacl/p/3498271.html
Maven(翻译为"专家","内行")是跨平台的项目管理工具
主要服务于基于Java平台的项目构建,依赖管理和项目信息管理
项目构建过程包括【清理项目】→【编译项目】→【测试项目】→【生成测试报告】→【打包项目】→【部署项目】这几个步骤,这六个步骤就是一个项目的完整构建过程
Maven管理的方式就是“自动下载项目所需要的jar包,统一管理jar包之间的依赖关系”
Maven约定了标准的目录结构
二、Maven构建过程
http://www.cnblogs.com/xdp-gacl/p/4051690.html
- 编译:项目根目录执行"mvn compile"命令编译项目的java类,编译成功会出现一个target文件夹,里面有.class文件
-
清理项目的命令是:"mvn clean",会删除编译时生成的target文件夹
- 项目根目录执行"mvn test"命令测试项目
- 打包项目的命令是:"mvn package" 打包成功后生成的jar文件在target文件夹中
- 项目根目录执行"mvn install"部署项目命令,会把最后生成的jar包发布到Maven存放jar包的仓库中,别的项目如果依赖到这个jar包也可以通过在pom.xml中配置使用了
使用"mvn install"命令,就把maven构建项目的【清理】→【编译】→【测试】→【打包】的这几个过程都做了,同时将打包好的jar包发布到本地的Maven仓库中,所以maven最常用的命令还是"mvn install",这个命令能够做的事情最多
maven的编译,清理,测试,打包,部署命令是可以几个命令同时组合起来使用的
- 先清理再编译:"mvn clean compile"
- mvn clean test
- mvn clean package
- mvn clean install
三、使用Maven命令创建项目
http://www.cnblogs.com/xdp-gacl/p/4240930.html
- 创建Java项目
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=myapp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
会在当前目录下创建项目,在D盘根目录执行以上命令就会生成一个名为myapp的Java项目
mvn clean install部署后会在target以及本地仓库中生成一个jar包
运行jar包:java -cp targetmyapp-1.0-SNAPSHOT.jar com.mycompany.app.App - 创建JavaWeb项目
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-WebApp -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
D盘执行以上命令会生成一个名为my-WebApp的Javaweb项目,mvn package打包项目,会在target下生成my-WebApp.war文件,把war文件放到tomcat中就可以运行了,除了使用Tomcat服务器运行Web项目之外,我们还可以在Web项目中集成Jetty发布运行,首先在pom.xml文件中配置Jetty插件,然后启动Jetty:mvn jetty:run1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 3 <modelVersion>4.0.0</modelVersion> 4 <groupId>com.mycompany.app</groupId> 5 <artifactId>my-WebApp</artifactId> 6 <packaging>war</packaging> 7 <version>1.0-SNAPSHOT</version> 8 <name>my-WebApp Maven Webapp</name> 9 <url>http://maven.apache.org</url> 10 <dependencies> 11 <dependency> 12 <groupId>junit</groupId> 13 <artifactId>junit</artifactId> 14 <version>3.8.1</version> 15 <scope>test</scope> 16 </dependency> 17 </dependencies> 18 <build> 19 <finalName>my-WebApp</finalName> 20 <pluginManagement> 21 <!--配置Jetty--> 22 <plugins> 23 <plugin> 24 <groupId>org.mortbay.jetty</groupId> 25 <artifactId>maven-jetty-plugin</artifactId> 26 </plugin> 27 </plugins> 28 </pluginManagement> 29 </build> 30 </project>
- 创建命令说明
mvn archetype:create或者mvn archetype:generate 固定写法
-DgroupId 组织标识(包名)
-DartifactId 项目名称
-DarchetypeArtifactId 指定ArchetypeId,maven-archetype-quickstart,创建一个Java Project;maven-archetype-webapp,创建一个Web Project
-DinteractiveMode 是否使用交互模式
archetype是mvn内置的一个插件,create任务可以创建一个java项目骨架,DgroupId是软件包的名称,DartifactId是项目名,DarchetypeArtifactId是可用的mvn项目骨架,目前可以使用的骨架有:
- maven-archetype-archetype
- maven-archetype-j2ee-simple
- maven-archetype-mojo
- maven-archetype-portlet
- maven-archetype-profiles (currently under development)
- maven-archetype-quickstart
- maven-archetype-simple (currently under development)
- maven-archetype-site
- maven-archetype-site-simple
- maven-archetype-webapp
每一个骨架都会建相应的目录结构和一些通用文件,最常用的是maven-archetype-quickstart和maven-archetype-webapp骨架。maven-archetype-quickstart骨架是用来创建一个Java Project,而maven-archetype-webapp骨架则是用来创建一个JavaWeb Project
- pom.xml文件的节点元素说明
<project> pom文件的顶级节点
<modelVersion> object model版本,对Maven2和Maven3来说,只能是4.0.0
<groupId> 项目创建组织的标识符,一般是域名的倒写
<artifactId> 定义了项目在所属组织的标识符下的唯一标识,一个组织下可以有多个项目
<version> 当前项目的版本,SNAPSHOT,表示是快照版本,在开发中<packaging> 打包的方式,有jar、war、ear等
<name> 项目的名称
<url> 项目的地址<properties> 属性配置,比如:<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<dependencies> 构建项目依赖的jar其中由groupId、artifactId和version唯一的确定了一个项目坐标