1、使用maven快速创建一个工程
首先需要在settings.xml中加一段配置,用阿里云的镜像仓库去下载各种东西
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
找个目录执行如下命令,基于maven创建一个工程
mvn archetype:generate -DgroupId=com.huiyun.maven -DartifactId=maven-first-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
执行完命令后会在当前目录下创建一个新目录,目录的名字就是DartifactId指定的名字。进入该目录就可以看到maven为我们初始化了工程对应的目录结构。
2、maven工程目录结构
src/main/java目录包含的是这个项目的源码,
src/test/java目录包含的是测试代码,pom.xml文件时核心配置文件。
3、pom.xml的初步介绍
<project>:pom.xml中的顶层元素
<modelVersion>:POM本身的版本号,一般很少变化
<groupId>:创建这个项目的公司或者组织,一般用公司网站后缀,比如com.company,或者cn.company
<artifactId>:这个项目的唯一标识,一般生成的jar包名称,会是<artifactId>-<version>.<extension>这个格式,比如说myapp-1.0.jar
<packaging>:要用的打包类型,比如jar,war,等等。
<version>:这个项目的版本号
<name>:这个项目用于展示的名称,一般在生成文档的时候使用
<url>:这是这个项目的文档能下载的站点url,一般用于生成文档
<description>:用于项目的描述
4、对项目进行打包
源代码和测试代码已有,我们需要自动化运行测试用例+编译+打包,另外由于用到了junit依赖,所以maven因该可以自动下载和管理依赖。
进入maven-first-app,执行mvn package。
可以发现
(1)maven自动给我们下载了jar包,不需要手动去管理依赖。
(2)自动运行了单元测试的用例。自动把源代码编译成了.class文件,自动把代码打成了jar包。
5、执行打好的jar包
java -cp maven-first-app-1.0-SNAPSHOT.jar com.huiyun.maven.App
6、最后来一张图进行总结
(1)maven首先会去参考settings.xml配置文件的配置
(2)接着就是解析maven工程的pom.xml
(3)看pom.xml里面声明了哪些依赖
(4)去本地仓库里找有没有那些依赖,比如有没有junit
(5)如果本地仓库找不到,那么就会去远程仓库找。所谓的远程仓库是包含了几乎所有的依赖包,~/.m2/repository是本地仓库
(6)远程仓库找到后就会下载下来并放在本地仓库缓存起来,以供以后使用。
(7)执行构建(清理、编译、打包)
7、IDEA创建maven项目
(1)Create new project -->Maven -->Create from archetype–>maven archetype quickstart
(2)设置一下项目的坐标
groupId:com.huiyun.maven
artifactId:maven-helloworld
version:1.0-SNAPSHOT
在pom.xml中将junit的依赖从3.8.1版本修改成4.12版本
在IDEA中开发maven项目的话,每次你保存pom.xml,IDEA就会让maven自动去解析pom.xml,然后下载你最新声明的依赖,立即从远程仓库下载到本地仓库
但是如果纯手工通过archetype去创建maven工程的话,是需要在mvn test package打包的时候,才会去检查pom.xml,才会去下载依赖。
(3)编写相应的代码
src/main/java
package com.huiyun.maven;
/**
* Hello world!
*
*/
public class HelloWorld {
public String sayHello(String name) {
return "hello,"+ name;
}
public static void main( String[] args )
{
System.out.println( "Hello World!" );
}
}
编写测试代码
package com.huiyun.maven;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class HelloWorldTest {
@Test
public void testSayHello() {
HelloWorld helloWorld = new HelloWorld();
String result = helloWorld.sayHello("leo");
assertEquals("hello,leo", result);
}
}
(5)用IDEA执行maven命令
先进行如下配置
接着执行如下命令即可