maven2——POM重点讲解篇

POM.xml是一个maven项目的核心,每个工程的目录下面总有一个POM.XML文件,也就是说,它是属于单个项目的,要有这个概念。

首先,把 POM.xml 需要涉及的内容列出

<project>
  
<modelVersion>4.0.0</modelVersion>

  
<!-- The Basics -->
  
<groupId>...</groupId>
  
<artifactId>...</artifactId>
  
<version>...</version>
  
<packaging>...</packaging>
  
<dependencies>...</dependencies>
  
<parent>...</parent>
  
<dependencyManagement>...</dependencyManagement>
  
<modules>...</modules>
  
<properties>...</properties>

  
<!-- Build Settings -->
  
<build>...</build>
  
<reporting>...</reporting>

  
<!-- More Project Information -->
  
<name>...</name>
  
<description>...</description>
  
<url>...</url>
  
<inceptionYear>...</inceptionYear>
  
<licenses>...</licenses>
  
<organization>...</organization>
  
<developers>...</developers>
  
<contributors>...</contributors>

  
<!-- Environment Settings -->
  
<issueManagement>...</issueManagement>
  
<ciManagement>...</ciManagement>
  
<mailingLists>...</mailingLists>  
  
<scm>...</scm>

  
<prerequisites>...</prerequisites>
  
<repositories>...</repositories>
  
<pluginRepositories>...</pluginRepositories>
  
<distributionManagement>...</distributionManagement>
  
<profiles>...</profiles>
</project>

 

上面有四个部分的Setting,其中第一部分是最为重要的,官方的解释,已经大家的翻译我都没必要复述了,主要描述下我个人的理解。

第一:groupId 这个其实就是java里包的概念,比如groupId=org.apache.maven,那么这个项目就会存在仓库里org文件夹下,apache文件夹下,maven文件夹下

第二:artifactId 这个其实就是项目的名称,org.apache.maven下可以有许多artifactId,而这些artifactId,都是同一个项目大组的,都是属于org.apache.maven

第三:vision 这个么其实又是文件夹的标识而已啦

看下图,就可以明白了

当我们在项目的根目录下运行 mvn install 的时候,maven就会根据上面3个setting把你这个项目安装到仓库里去了。

Dependencies

这里设置了项目所依赖的包,在eclipse插件中可以通过add-dependencies来插入到POM,之后会自动去从仓库里找,找的时候会看看这个包是否还依赖于其他包,如果有先去下载其他包,可以说是深入优先,树的查找。比如,我们添加了struts2.0,它就会去把很多struts2.0依赖的包自动装入到classpath注意:1、执行add-dependencies必须一次执行一个,千万别在一个任务还没完成前就匆忙又点一个add-dependencies,会出错的,它在并行上有小BUG的。2、总会有包下载不到的,我们需要手动下载,然后执行

mvn install:install-file –Dfile=non-maven-proj.jar –DgroupId=some.group –DartifactId=non-maven-proj –Dversion=1

 

Properties

这里设置的东西类似与antproperties,这里设置的值可以在其他地方通过${X}来读取。这里定义了5中不同类型的properties

1.      env.X : Prefixing a variable with "env." will return the shell’s environment variable. For example, ${env.PATH} contains the $path environment variable (%PATH% in Windows). Windows环境变量。

2.      project.x : A dot (.) notated path in the POM will contain the corresponding element’s value. For example: <project><version>1.0</version></project> is accessible via ${project.version} . POM里的变量。

3.      settings.x : A dot (.) notated path in the settings.xml will contain the corresponding element’s value. For example: <settings><offline>false</offline></settings> is accessible via ${settings.offline} . setting里的变量。

4.      Java System Properties: All properties accessible via java.lang.System.getProperties() are available as POM properties, such as ${java.home} .

5.      x : Set within a <properties /> element. The value may be used as ${someVar} . 普通的一般的定义,最常用。

 

至于其他的setting,我个人觉得用处不大,或者说不是常用的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值