(三)《Maven实战》读书笔记 —— 手动创建Maven项目
第3章:Maven使用入门
到目前为止,已经大概了解并安装好了Maven,现在,我们开始创建一个最简单的Hello World项目。
3.1 编写POM
Maven项目的核心是pom.xml。POM(Project Object Model,项目对象模型)定义了项目的基本信息,用于描述项目如何构建,声明项目依赖等。现在先为Hello World项目编写一个简单的pom.xml。首先创建一个名为hello-world的文件夹,打开该文件夹,新建一个名为pom.xml的文件,输入下面内容。
<?xml version="1.0" encoding="UTF-8"?> <project> <modelVersion>4.0.0</modelVersion> <groupId>com.juvenxu.mvnbook</groupId> <artifactId>hello-world</artifactId> <version>1.0-SNAPSHOT</version> <name>Maven Hello World Project</name> </project>
3.2 编写主代码
项目的主代码和项目的测试代码不同,项目的主代码会被打包到最终的构件中(如jar),而测试代码只在运行测试的时候用到,不会被打包。默认情况下,Maven假设项目主代码位于src/main/java目录,我们遵循Maven约定,创建该目录,然后在该目录下创建文件com.juvenxu.mvnbook.helloworld,将文件目录结构表示包结构,依次创建文件夹。并在该文件下创建HelloWorld.java,输入下面内容。
package com.juvenxu.mvnbook.helloworld; public class HelloWorld{ public String sayHello(){ return "Hello Maven"; } public static void main(String[] args){ HelloWorld helloworld = new HelloWorld(); String result = helloworld.sayHello(); System.out.print(result); } }
在项目根目录下运行命令 mvn clean compile
3.3 编写测试代码
为了使项目结构保持清晰,主代码于测试代码应该分别位于独立的目录中。对应地,Maven项目的默认测试代码目录是src/test/java。因此,在编写测试代码前,先创建该目录。JUnit是Java世界中事实上的单元测试标准。要使用JUnit,首先需要为Hello World项目添加一个JUnit依赖,添加如下代码于项目的POM中。
......
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.7</version> <scope>test</scope> </dependency> </dependencies>
......
配置了测试依赖,接着就可以编写测试类。在src/test/java目录下创建文件com.juvenxu.mvnbook.helloworld,将文件目录结构表示包结构,依次创建文件夹。并在该文件下创建HelloWorldTest.java,输入下面内容。
package com.juvenxu.mvnbook.helloworld; import static org.junit.Assert.assertEquals; import org.junit.Test; public class HelloWorldTest{ @Test public void testSayHello(){ HelloWorld helloworld = new HelloWorld(); //准备测试类及数据 String result = helloworld.sayHello(); //执行要测试的行为 assertEquals("Hello Maven", result); //检查测试结果 } }
调用Maven命令执行测试 mvn clean test
3.4 打包和运行
将项目进行编译和测试之后,下一个重要的步骤就是打包(package)。Maven的默认打包类型是jar。简单的执行命令mvn clean package进行打包。
至此,我们得到了项目的输入,如果有需要的话,就可以复制这个jar文件到其他项目的classpath中从而使用HelloWorld类。但是,如何才能让其他的Maven项目直接引用这个jar呢?还需要一个安装的步骤,执行mvn clean install
在打包之后,又执行了安装任务install。从输出可以看到该任务将项目输出的jar安装到了Maven本地仓库,可以打开相应的文件夹查看到Hello World项目的pom和jar。之前讲述JUnit的POM及jar的下载的时候,我们说只有构建下载到本地仓库后,才能由所有Maven项目使用,这里是同样的道理,只有将Hello World的构件安装到本地仓库之后,其他Maven项目才能使用它。
3.5 使用Archetype生成项目骨架
Hello World项目中有些Maven的约定:在项目的根目录中放置pom.xml,在src/main/java目录中放置项目的主代码,在src/test/java中放置项目的测试代码。我们称这些基本的目录结构和pom.xml文件内容称为项目骨架,当第一次创建项目骨架的时候, 你还会饶有兴致的去体会这些默认约定背后的思想,第二次,第三次,你也许还会满意自己的熟练程度,但第四次、第五次做同样的事情,你可能就会恼火了。为此Maven提供了Archetype帮助我们快速勾勒项目骨架。新建一个文件夹作为项目的根目录,在根目录中运行mvn archetype:generate命令,就会出现很多可用的archetype供选择,输入对应的archetype编号后回车,紧接着Maven会提示输入创建项目的groupId、artifactId、version以及包名package。
3.6 使用IDE创建Maven项目
在集成了m2eclipse的IDE中创建Maven项目,非常的简便。
首先File>>New>>Other>>Maven Project ,点击Next>>Next>>选择archetype>>Next。输入相应的GroupId、ArtfactId、Version、Package>>Finish
【END】