1.POM文件
POM(project object model项目对象模型)定义了项目的基本信息,用于描述项目如何构建,声明项目依赖等。
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.springagg</groupId>
<artifactId>hello-word</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>hello-word project</name>
<project>
<project>
是pom.xml的根元素,它声明了一些POM相关的命名空间及xsd元素,虽然这些属性不是必须的,但使用这些属性能够让第三方工具帮我们快速编辑POM。
<modelVersion>
指定了POM模型的版本
<groupId><artifactId><version>
三个元素定义了一个项目的基本坐标。<groupId>
定义了属于哪个组,这个组往往和项目所在的组织或公司存在关联。如:公司为mycom,有一个项目myapp,那么groupId就是com.mycom.myapp。<artifactId>
定义了当前maven项目在组中唯一的ID。<version>
顾名思义为版本。
<name>
声明了一个对于用户更为友好的项目名称,虽然这不是必须的,但是推荐每个pom声明name,方便交流。
2.主代码
项目的主代码会被打包到最终的构件中,而测试代码只是在运行测试时用到,不会被打包。项目主代码要放到src/main/java/目录下(遵循maven的约定),无效额外配置,maven会自动搜索该目录找到项目主代码。其中主代码类的包名与在POM中定义的groupId和artifactId相吻合。
clean告诉maven清理输出目录target/,compile告诉maven编译项目主代码,从输出中看到maven首先执行了clean:clean任务,删除target/目录。默认情况下,maven构建的所有输出都在target/目录中;接着执行resources:resources任务;最后执行compiler:compile任务。
3.测试代码
在java世界,由Kent和Erich Gamma建立的JUnit是世界上的单元测试标准。要使用JUnit就要在项目中添加依赖。
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
scope为依赖范围,若依赖范围为test则表示该依赖只对测试有效。换句话说,测试代码中的import JUnit代码是么有问题的,但是在主代码中要使用import JUnit,就会造成编译错误。如果不声明依赖范围,默认就是compile,表示该依赖对主代码和测试代码都有效。
由于历史原因,maven的核心插件之一–compile插件默认只支持编译java1.3,所以对于测试@Test注解不支持。需要配置ompile插件使其支持。
<plugin> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
4.打包和运行
–>mvn clean package 进行打包
maven会在打包之前进行编译、测试等操作。jar任务负责打包,实际上就是jar插件的jar目标将项目主代码打包成一个jar文件。该文件也位于target/输出目录中
–>mvn clean install 项目安装运行
该任务将输出的jar安装到maven本地仓库,我们说只有构件被下载到本地仓库后,才能由所有的maven项目使用,这里是同样的道理。只有将打包后的构件安装到本地仓库后,其他maven项目才能使用它。