pom,项目对象模型,是maven最核心的东西。所谓项目对象模型,那他到底是个什么模型呢?我的理解就是,可以把项目看成一个对象,通过pom组织起来并加以管理应用。所以,pom的最重要作用,也是maven的最主要作用是管理这些依赖关系。
先看下pom文件的基本结构。
<
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.0http://maven.apache.org/xsd/maven-4.0.0.xsd">
<
modelVersion
>4.0.0</
modelVersion
>
<
groupId
>com.mycompany.app</
groupId
>
<
artifactId
>my-app</
artifactId
>
<
version
>1.1.0.1</
version
>
<
packaging
>jar</
packaging
>
<
name
>myapp</
name
>
<
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
>
上图中分为项目基本信息和项目构建信息两个部分
项目基本信息:
<
modelVersion
>4.0.0</
modelVersion
>
<!--路径名称-->
<
groupId
>com.mycompany.app</
groupId
>
<!--项目名称-->
<
artifactId
>my-app</
artifactId
>
<!--版本信息-->
<
version
>1.1.0.1</
version
>
<!--打包生成文件类型-->
<
packaging
>jar</
packaging
>
<
name
>myapp</
name
>
Properties信息:用来覆盖项目默认的信息。
<
properties
>
<
project.build.sourceEncoding
>UTF-8</
project.build.sourceEncoding
>
</
properties
>
Dependencies信息:项目依赖的jar包。
<
dependencies
>
<
dependency
>
<
groupId
>junit</
groupId
>
<
artifactId
>junit</
artifactId
>
<
version
>3.8.1</
version
>
<
scope
>test</
scope
>
</
dependency
>
</
dependencies
>
repositories: 去那里下载jar包,可以在 其中定义本地仓库。
pluginrepositories:
项目构建信息:
build::定义项目默认结构。可以通过更改其中结构,对已有的非maven项目进行maven化重建。
reporting:生成站点信息
profile: 用户自定义的一些属性
mvn install -PprofileId
父pom位置
其实项目真正起作用的pom不止是上面定义的pom文件,每个工程都会有一个父pom,子pom与父pom一起构造出真正的pom文件-effective pom
可以通过命令mvn help:effective-pom来查看有效pom文件。
父pom位置:%MAVEN_HOME%\lib\maven-model-builder-3.3.9.jar\org\apache\maven\model\pom-4.0.0.xml。
那父pom里面都有什么有用的东西呢?
1. 规定pluin的插件版本
2. java工程目录结构。