(三)Maven使用入门之Hello World
主要内容
- 编写POM
- 编写主代码
- 编写测试代码
- 打包和运行
到目前为止,已经大概了解并安装好了Maven,现在开始创建一个最简单的HelloWorld项目。
编写POM
就像Make的Makefile、Ant的build.xml一样,Maven项目的核心是pom.xml。POM(Project Object Model,项目对象模型)定义了项目的基本信息,用于描述项目如何构建,声明项目依赖等等。
现在先为HelloWorld项目编写一个最简单的pom.xml。
首先创建一个名为helloworld的文件夹,打开该文件夹,新建一个名为pom.xml的文件,输入其内容,如下所示:
1 <project xmlns="http://maven.apache.org/POM/4.0.0" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4 <modelVersion>4.0.0</modelVersion> 5 6 <groupId>com.chd.work</groupId> 7 <artifactId>helloworld</artifactId> 8 <version>1.0-SNAPSHOT</version> 9 <packaging>jar</packaging> 10 <name>Maven Hello World Project</name> 11 12 <properties> 13 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 14 </properties> 15 16 <build> 17 <plugins> 18 <plugin> 19 <groupId>org.apache.maven.plugins</groupId> 20 <artifactId>maven-compiler-plugin</artifactId> 21 <version>3.7.0</version> 22 <configuration> 23 <source>1.9</source> 24 <target>1.9</target> 25 <encoding>UTF-8</encoding> 26 </configuration> 27 </plugin> 28 <plugin> 29 <groupId>org.apache.maven.plugins</groupId> 30 <artifactId>maven-shade-plugin</artifactId> 31 <version>3.1.0</version> 32 <executions> 33 <execution> 34 <phase>package</phase> 35 <goals> 36 <goal>shade</goal> 37 </goals> 38 <configuration> 39 <transformers> 40 <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 41 <mainClass>com.chd.work.helloworld.HelloWorld</mainClass> 42 </transformer> 43 </transformers> 44 </configuration> 45 </execution> 46 </executions> 47 </plugin> 48 </plugins> 49 </build> 50 </project>
简要介绍一下pom.xml中的内容:
project是所有pom.xml的根元素,它还声明了一些POM相关的命名空间及xsd元素,虽然这些属性不是必须的,但使用这些属性能够让第三方工具(如IDE中的xml编辑器)帮助我们快速编辑POM。
根元素下面的第一个子元素modelVersion指定了当前POM模型的版本,对于Maven3来说,它只能是4.0.0。
这段代码中最重要的是包含groupId、artifactId和version的三行。这三个元素定义了一个项目基本的坐标,在Maven的世界,任何的jar、pom或者war都是以基于这些基本的坐标进行区分的。
groupId定义了项目属于哪个组,这个组往往和项目所在的组织或公司存在关联。如果你的公司是mycom,有一个项目为myapp,那么groupId就应该是com.mycom.myapp。
artifactId定义了当前Maven项目在组中唯一的ID,我们为这个Hello World项目定义artifactId为helloworld。
version指定了Hello World项目当前的版本——1.0SNAPSHOT。SNAPSHOT意为快照,说明该项目还处于开发中,是不稳定的版本。
name元素声明了一个对用户更为友好的项目名称,虽然这不是必须的,但还是推荐为每个POM声明name,以方便信息交流。
编写主代码
默认情况下,Maven假设项目主代码位于src/main/java目录,我们在该目录下创建文件com/chd/work/helloworld/HelloWorld.java,其内容如下所示:
1 package com.chd.work.helloworld; 2 3 public class HelloWorld { 4 public String sayHello() { 5 return "Hello Maven!"; 6 } 7 8 public static void main(String[] args) { 9 System.out.println(new HelloWorld().sayHello()); 10 } 11 }
代码编写完毕后,使用Maven进行编译,在项目根目录下运行命令mvn clean compile,得到输出。clean告诉Maven清理输出目录target/,compile告诉Maven编译项目主代码,将项目主代码编译至target/classes目录(编译好的类为com/chd/work/helloworld/HelloWorld.class。
至此,Maven在没有任何额外的配置的情况下就执行了项目的清理和编译任务。
打包和运行
简单地执行命令mvn clean package进行打包,Maven在打包之前会执行编译、测试等操作,得到helloworld-1.0-SNAPSHOT.jar文件。
如果想要其他的Maven项目直接引用这个jar文件,还需要一个安装的步骤。执行mvn clean install,在打包之后,又执行安装任务,将该项目输出的jar安装到了本地Maven仓库中。可以打开相应的文件夹看到Hello World项目的pom和jar。