详解Maven POM(项目对象模型)
POM(ProjectObjectModel,项目对象模型)是Maven工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。
执行任务或目标时,Maven会在当前目录中查找POM。它读取POM,获取所需的配置信息,然后执行目标。
POM中可以指定以下配置:
- 项目依赖
- 插件
- 执行目标
- 项目构建profile
- 项目版本
- 项目开发者列表
- 相关邮件列表信息
在创建POM之前,我们首先需要描述项目组(groupId),项目的唯一ID。
4.0.0 com.companyname.project-group project 1.0
所有POM文件都需要project元素和三个必需字段:groupId,artifactId,version。
父(Super)POM
父(Super)POM是Maven默认的POM。所有的POM都继承自一个父POM(无论是否显式定义了这个父POM)。父POM包含了一些可以被继承的默认设置。因此,当Maven发现需要下载POM中的依赖时,它会到SuperPOM中配置的默认仓库http://repo1.maven.org/maven2去下载。
Maven使用effectivepom(Superpom加上工程自己的配置)来执行相关的目标,它帮助开发者在pom.xml中做尽可能少的配置,当然这些配置可以被重写。
使用以下命令来查看SuperPOM默认配置:
mvnhelp:effective-pom
接下来我们创建目录MVN/project,在该目录下创建pom.xml,内容如下:
4.0.0 com.companyname.project-group project 1.0
在命令控制台,进入MVN/project目录,执行以下命令:
C:\MVN\project>mvnhelp:effective-pom
Maven将会开始处理并显示effective-pom。
[INFO]Scanningforprojects...
Downloading:https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom
...
[INFO]------------------------------------------------------------------------
[INFO]BUILDSUCCESS
[INFO]------------------------------------------------------------------------
[INFO]Totaltime:01:36min
[INFO]Finishedat:2018-09-05T11:31:28+08:00
[INFO]FinalMemory:15M/149M
[INFO]------------------------------------------------------------------------
EffectivePOM的结果就像在控制台中显示的一样,经过继承、插值之后,使配置生效。
4.0.0 com.companyname.project-group project 1.0 C:\MVN\project\src\main\java src/main/scripts C:\MVN\project\src\test\java C:\MVN\project\target\classes C:\MVN\project\target\test-classes resource-0 C:\MVN\project\src\main\resources resource-1 C:\MVN\project\src\test\resources C:\MVN\project\target project-1.0 maven-antrun-plugin 1.3 maven-assembly-plugin 2.2-beta-2 maven-clean-plugin 2.2 maven-compiler-plugin 2.0.2 maven-dependency-plugin 2.0 maven-deploy-plugin 2.4 maven-ear-plugin 2.3.1 maven-ejb-plugin 2.1 maven-install-plugin 2.2 maven-jar-plugin 2.2 maven-javadoc-plugin 2.5 maven-plugin-plugin 2.4.3 maven-rar-plugin 2.2 maven-release-plugin 2.0-beta-8 maven-resources-plugin 2.3 maven-site-plugin 2.0-beta-7 maven-source-plugin 2.0.4 maven-surefire-plugin 2.4.3 maven-war-plugin 2.1-alpha-2 maven-help-plugin 2.1.1 false central MavenRepositorySwitchboard http://repo1.maven.org/maven2 never false central MavenPluginRepository http://repo1.maven.org/maven2 C:\MVN\project\target/site
POM标签大全详解
4.0.0 asia.banseon banseon-maven2 jar 1.0-SNAPSHOT banseon-maven http://www.baidu.com/banseon Amavenprojecttostudymaven. jira http://jira.baidu.com/banseon Demo banseon@126.com banseon@126.com banseon@126.com http:/hi.baidu.com/banseon/demo/dev/ HELLOWORLD banseon banseon@126.com ProjectManager Architect demo http://hi.baidu.com/banseon No -5 Apache2 http://www.baidu.com/banseon/LICENSE-2.0.txt repo Abusiness-friendlyOSSlicense scm:svn:http://svn.baidu.com/banseon/maven/banseon/banseon-maven2-trunk(dao-trunk) scm:svn:http://svn.baidu.com/banseon/maven/banseon/dao-trunk http://svn.baidu.com/banseon demo http://www.baidu.com/banseon ...... ...... WindowsXP Windows x86 5.1.2600 mavenVersion 2.0.3 /usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/ /usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/ ...... ...... ...... ...... ...... ...... banseon-repository-proxy banseon-repository-proxy http://192.168.1.169:9999/repository/ default ...... org.apache.maven maven-artifact 3.8.1 jar test spring-core org.springframework true ...... banseon-maven2 banseonmaven2 file://${basedir}/target/deploy banseon-maven2 Banseon-maven2SnapshotRepository scp://svn.baidu.com/banseon:/usr/local/maven-snapshot banseon-site businessapiwebsite scp://svn.baidu.com/banseon:/var/www/localhost/banseon-web
以上就是详解MavenPOM(项目对象模型)的详细内容,更多关于MavenPOM(项目对象模型)的资料请关注毛票票其它相关文章!