POM:项目对象模型,定义了整个maven项目信息,包括类型,名称,包含的依赖,自定义插件行为.如在上一篇的demo中的pom.xml如下
<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>com.sam.app</groupId>
<artifactId>my-app</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>my-app</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
麻雀虽小,五脏俱全。这个自动生成的POM文件包含了最基本的元素:
- project :根元素
- modelVersion 这个是固定的model版本
- groupId 组织的Id,用于区分,for example org.apache.maven.plugins 就是所有maven插件的groupId
- artifactId 具体的项目Id,最后生成的jar包名称格式: <artifactId>-<version>.<extension> (for example, myapp-1.0.jar).
- packaging 打包的类型(e.g. JAR, WAR, EAR, etc.).
- version 版本号
- name 项目名
- url 如果有的话
- description 简单描述
生命周期:一个项目构建的一系列阶段:
- validate: 确认整个项目是否正确,必要的信息是否可用
- compile: 编译项目源代码
- test: 用常用的单元测试框架测试源代码,这些测试不用被打包或部署,故分为一个阶段
- package: 打包编译好的文件为,jar或者war
- integration-test:部署包到运行环境中进行集成测试
- verify: 验证包的有效性,符合质量标准
- install: 安装包到本地仓库,以便其他项目可以利用
- deploy: 部署
- clean: 清理之前的构建
- site: 生成站点文档
当我们运行>mvn package时,jar:jar目标被绑定到打包阶段,,而在这之前又有resources:resources=>compiler:compile=>resources:testResource=>compile:testCompile和surefire:test这些目标按生命周期的顺序被运行了
插件:其中的archetype就是插件 ,create则是插件的一个目标.一个插件有多个目标,maven有很多的插件,如Jar.Compiler,Surefire,Hibernate3,ruby,还可以自定义插件.
目标:目标表示一个明确的任务,要做什么
比如要让项目可以导入到eclipse,可以
mvn eclipse:eclipse
如果是IntelliJ IDEA,也有相应的
mvn idea:idea
插件:其中的archetype就是插件 ,create则是插件的一个目标.一个插件有多个目标,maven有很多的插件,如Jar.Compiler,Surefire,Hibernate3,ruby,还可以自定义插件.
目标:目标表示一个明确的任务
( ~/.m2/repository is the default location)
插件:其中的archetype就是插件 ,create则是插件的一个目标.一个插件有多个目标,maven有很多的插件,如Jar.Compiler,Surefire,Hibernate3,ruby,还可以自定义插件.
目标:目标表示一个明确的任务