POM
POM是Maven项目的核心。
POM(Project Object Model,项目对象模型)定义了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。
<?xml version="1.0" encoding="UTF-8"?><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/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>testMaven</artifactId><version>1.0-SNAPSHOT</version></project>
XML头**:**第一行,指定了XML文件的版本和编码方式。
project元素**:是所有pom.xml的根元素,声明了POM相关的命名空间和xsd元素**(非必需)。这些属性能够让第三方工具(如IDE中的XML编辑器)帮助我们快速编辑POM。
modelVersion元素:指定了当前POM模型的版本。对于Maven2和Maven3,它只能是4.0.0。
groupId,artifactId,version:是这段代码中最重要的,定义了项目的基本坐标。在Maven的世界里,任何的jar,pom或者war都是基于这些基本坐标进行区分的。类似于经度纬度定位一个地点。
- groupId定义了项目属于哪个组,这个组往往和项目所在的组织或公司存在关联。
- artifactId定义了当前Maven项目在组中唯一的ID。
- version指定了Hello World项目当前的版本——1.0-SNAPSHOT。SNAPSHOT意为快照,说明该项目还处于开发中,是不稳定的版本。
目录结构
遵循Maven约定把代码放到指定目录,无需额外的配置,Maven会自动搜寻到代码。
主代码:放于src/main/java。依照上面pom文件定义的groupId和artifactId,主代码的包名应该是org.example.testMaven。所以项目中的文件最好是置于**src/main/java/org/example/testMaven**文件夹中。
测试代码:放于src/test/java。
IDEA依赖
**查找依赖
在pom.xml文件内,鼠标右击,选择Generate,选择Dependency,在search for artifact输入你要查找的依赖,比如,junit,spring。选中后pom.xml文件内就会出现这个dependency的坐标。
<dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope> <!--可写可不写--></dependency></dependencies>
scope元素:依赖范围。若依赖范围为test,表示该依赖只对test有效。在main中import JUnit会报错。不声明依赖范围,表示该依赖对main和test都有效。
Sync依赖
刚刚我们已经把依赖写到POM文件里,接下来需要把依赖下载下来。
依赖范围
Maven命令
执行maven命令必须进入到pom.xml的目录中进行执行。
- 清理clean:清理输出目录target/。将以前编译得到的旧文件class字节码文件删除
- 编译compile:将java源程序编译成class字节码文件,一般是放到target/。
- 测试test:自动测试,自动调用junit程序
- 报告report:测试程序执行的结果
- 打包package:动态Web工程打War包,java工程打jar包
- 安装install:Maven特定的概念——-将打包得到的文件复制到“仓库”中的指定位置
- 部署deploy:将动态Web工程生成的war包复制到Servlet容器下,使其可以运行
插件
Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成。
例如编译源代码是由maven- compiler-plugin完成的。
进一步说,每个任务对应了一个插件目标(goal),每个插件会有一个或者多个目标。例如maven- compiler-plugin的compile目标用来编译位于src/main/java/目录下的主源码,testCompile目标用来编译位于src/test/java/目录下的测试源码。
Nexus
Nexus 是一个强大的 Maven 仓库管理工具,使用 Nexus 可以方便的管理内部仓库同时简化外部仓库的访问。
