Maven使用入门
pom.xml文件
代码的第一行是xml开头,制定了该xml文档的版本和编译方式。
紧接着是project元素,project是所有pom.xml的根元素,它还声明了一些POM相关的命名空间及xsd元素,这些元素能让第三方工具帮助我们快速编辑POM
项目的基本信息
- modelVersion制定了当前POM模型的版本
- groupId定义了项目属于哪一个组
- artifactId定义了当前Maven项目在组中的唯一ID
- version指定了项目的当前版本,SNAPSHOT意为快照,说明该项目还处于开发中,是不稳定的版本
代码示例:
<?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>cn.timevalue</groupId>
<artifactId>api</artifactId>
<version>0.0.1</version>
</project>
运行过程解析
编写代码注意点
- 项目主代码和测试代码不同,项目的主代码会被打包到最终的构建中(如jar),而测试代码只在运行测试时用到,不会被打包。
- 一般来说,项目中Java类的包都应该基于项目的groupId和artifactId,这样更加清晰,更加符合逻辑,也方便搜索构建或者Java类。
- clean告诉Maven清理输出目录target/,compile告诉Maven编译项目主代码。
- 前面提到groupId,artifactId和version是任何一个项目的最基本的坐标,通过在dependencies元素中添加dependency声明项目所需要的依赖,依赖中的scope为依赖范围,若依赖范围为test则表示该依赖只对测试有效,后面文章会详细介绍添加依赖的注意点。
- 暂时需要了解的是,在Maven执行测试(test)之前,它会先自动执行项目主资源处理,主代码编译,测试资源处理,测试代码编译等工作,这是Maven声明周期的一个特性。
- Maven的核心插件compile如果只支持编译Java1.3,需要配置Java的支持。
编写代码示例:
- dependencies
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
- JUnit框架的Asset类检查结果
HelloWorld helloWorld = new HelloWorld();
String result = helloWorld.sayHello();
assetEquals("Hello Maven", result)
- 配置Java支持版本
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins<groupId>
<artifactId>maven-compile-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
打包和运行
打包
- 命令:mvn clean package
- 生成的文件位于target/输出目录中,它是根据artifactId-version.jar规则进行命名的,如有需要,还可以使用finalName来定义该文件的名称。
安装到Maven本地仓库命令:mvn clean install
其它命令
- 编译:mvn clean compile
- 测试:mvn clean test
如果要生成可执行的jar文件,需要借助maven-shade-plugin,配置该插件的方法自行百度。