03.第一个maven应用
一个简单的Maven项目示例
前置条件
- 已安装maven
- 系统可以接入互联网
建立目录并编写maven的pom.xml
在系统任意目录下建立项目目录,并在目录下建立pom.xml文件,修改pom.xml文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>org.test</groupId>
<artifactId>demo</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
注释: 第一行为标准的xml头
第三、四、五行为xml的约束,为固定写法,如果使用的maven版本不同可能会有不同
第六行为maven的POM项目模型版本,一般不会变。
第七行groupId为组织Id,一般为项目所属组织,构建时生成的路径也是由此生成。
第八行artifactId为项目名称,它和group ID一起唯一标识一个构件(项目)。
第九行version为项目版本号,项目当前版本,格式为:主版本.次版本.增量版本-限定版本号
第十一行properties节点中及其中的project.build.sourceEncoding定义了项目源代码的编码格式
建立源代码和测试代码目录
在项目目录中建立如下目录结构:
basedir
└─src
├─main
│ └─java
│ └─org
│ └─test
│ └─main
└─test
└─java
└─org
└─test
└─main
建立源代码和测试代码
新建文件:src\main\java\org\test\main\HelloMaven.java,内容如下:
package org.test.main;
public class HelloMaven{
public static void main(String[] args){
System.out.println("Hello Maven");
}
public String say(String name){
return "Hello "+name;
}
}
新建文件:src\test\java\org\test\main\TestHelloMaven.java,内容如下:
package org.test.main;
import org.junit.*;
import static org.junit.Assert.*;
public class TestHelloMaven{
@Test
public void testHelloMaven(){
HelloMaven hm = new HelloMaven();
String result = hm.say("Maven");
assertEquals(result,"Hello Maven");
}
}
编译
打开一个终端,切换到项目目录,执行以下命令:
$ mvn compile
此时maven从中心仓库中下载需要依赖的项目包,到用户目录的.m2目录(此目录可配置)下,并且在完成后,编译源代码文件,并输出结果,如果结果如下,则表示编译成功:
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ demo ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to E:\maven\demo\target\classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.429 s
[INFO] Finished at: 2015-10-20T15:23:50+08:00
[INFO] Final Memory: 16M/110M
[INFO] ------------------------------------------------------------------------
此时,目录结构如下:
├─src
│ ├─main
│ │ └─java
│ │ └─org
│ │ └─test
│ │ └─main
│ └─test
│ └─java
│ └─org
│ └─test
│ └─main
└─target
├─classes
│ └─org
│ └─test
│ └─main
└─maven-status
└─maven-compiler-plugin
└─compile
└─default-compile
target目录为编译输出目录。
测试
修改pom文件,在project节点下添加如下内容:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
此节点添加了项目对Junit包的依赖,其中的groupId、artifactId、version为Junit在maven中心仓库的坐标(唯一标识)。
修改完成后,在终端中执行如下命令:
$ mvn test
此时,maven下载与测试相关的包,以及依赖的Junit包到用户目录的.m2文件夹,之后完成测试。 显示如下内容表示命令执行成功:
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running org.test.main.TestHelloMaven
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.087 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.373 s
[INFO] Finished at: 2015-10-20T15:31:57+08:00
[INFO] Final Memory: 14M/138M
[INFO] ------------------------------------------------------------------------
测试之后的目录结构如下:
├─src
│ ├─main
│ │ └─java
│ │ └─org
│ │ └─test
│ │ └─main
│ └─test
│ └─java
│ └─org
│ └─test
│ └─main
└─target
├─classes
│ └─org
│ └─test
│ └─main
├─maven-status
│ └─maven-compiler-plugin
│ ├─compile
│ │ └─default-compile
│ └─testCompile
│ └─default-testCompile
├─surefire-reports
└─test-classes
└─org
└─test
└─main
surefire-reports目录包含了测试结果。
清理
clean指令用于清除编译、测试、打包时生成的目录及文件。
在项目目录中运行命令:
$ mvn clean
此时项目目录下的target目录被删除。
打包
package指令用于生成项目的jar包。
在项目目录中运行命令:
$ mvn package
此时,maven会下载相关包,编译源代码,测试代码,执行测试,如果测试通过,源代码将被打包。target目录下会生成项目的jar文件。
安装
install 指令用于将包安装到本地的maven仓库中,供其它的项目引用。
在项目目录中运行命令:
$ mvn install
执行结束后,系统用户目录下会在生成对应目录及文件如下:
~/.m2/repository/org/test/demo$ls -alh
total 5.0K
drwxr-xr-x 1 Cloud 197121 0 十月 20 08:23 .
drwxr-xr-x 1 Cloud 197121 0 十月 20 08:23 ..
drwxr-xr-x 1 Cloud 197121 0 十月 20 08:23 1.0-SNAPSHOT
-rw-r--r-- 1 Cloud 197121 274 十月 20 08:23 maven-metadata-local.xml
将maven项目转换成Eclipse支持的Java项目
在项目目录中运行命令:
$ mvn eclipse:eclipse
此时项目目录下会生成.classpath 和 .project。打开安装了Maven Integration for Eclipse插件的eclipse导入项目即可。
组合指令
maven的编译,清理,测试,打包,部署命令是可以几个命令同时组合起来使用的,常用的命令组合
如:
先清理再编译:mvn clean compile
先清理后打包:mvn clean package