1、pom.xml文件介绍

Maven项目的核心是pom.xml,pom(Project Object Model项目对象模型

pom.xml文件定义了项目的基本信息,项目构建,项目依赖等。

  1. <project xmlns = " http://maven.apache.org/POM/4.0.0 " xmlns:xsi = " http://www.w3.org/2001/XMLSchema-instance "
  2. xsi:schemaLocation = " http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd ">
  3. <modelVersion>4.0.0</modelVersion>
  4. <groupId>com.fz.shiro</groupId>
  5. <artifactId>ShiroTest</artifactId>
  6. <packaging>war</packaging>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <name>ShiroTest Maven Webapp</name>
  9. </project>

porject:是所有元素的根元素

以下元素(groupId,artifactId,packaging,version)是maven的坐标,他们唯一标识了一个项目

modelVersion:指定了当前模型的版本,对于Maven2和Maven3来说,它只能说4.0.0

groupId:定义了项目属于哪个组,假如你在github上建立一个demo项目,那groupId应该com.github.demo。如果你的公司是百度,有个helloword的项目。那groupId应该为com.baidu.helloword如果你的helloword项目有很多模块,则按模块化分。com.baidu.helloword.模块名称

artifactId:定义了当前maven项目在组中的唯一ID,假如你的项目为myapp,groupId为com.baid.myapp。那你的artifactId可以按模块划分。例如当前编写的是myapp项目中的工具类,则artifactId可以为myapp-utils

packaging:表示打包后项目的类型(默认是jar),web项目为war

version:指定了当前项目的版本,SNAPSHOT意为快照,表示正在开发中,不是稳定版本。

name:声明了一个对于用户更为友好的项目名称

图片来自于: 史上最全的maven的pom.xml文件详解

2、settings.xml文件介绍

包含了本地仓库位置,远程仓库服务器以及认证信息等。

settings.xml存在于两个地方:

  1. 安装的地方:$M2_HOME/conf/settings.xml
  2. 用户的目录:${user.home}/.m2/settings.xml

前者又被叫做全局配置,后者被称为用户配置。如果两者都存在,它们的内容将被合并,并且用户范围的settings.xml优先。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  5. <!--指定本地仓库存储路径。默认值为~/.m2/repository 即 ${user.home}/.m2/repository。 -->
  6. <localRepository>d:/.m2/repository</localRepository>
  7. <!--指定Maven是否需要和用户输入进行交互。true:需要与用户交互;false:使用一个合理的默认值。默认值为true。 -->
  8. <interactiveMode>true</interactiveMode>
  9. <!--指定是否使用plugin-registry.xml文件来管理插件版本。设为true表示使用。默认值为false。 -->
  10. <usePluginRegistry>false</usePluginRegistry>
  11. <!--指定是否在离线模式下运行。设为true表示项目构建要在离线模式下运行,默认值为false。 -->
  12. <offline>false</offline>
  13. <!-- 指定插件groupId列表,用于搜索时插件的groupId没有明确规定。 -->
  14. <pluginGroups>
  15. <!-- 指定使用插件查找进一步的组标识符 -->
  16. <pluginGroup>com.micmiu.plugins</pluginGroup>
  17. </pluginGroups>
  18. <!-- 指定这台机器连接到网络的代理服务器的列表。除非另有规定(系统属性或命令行开关), 列表中配置的第一代理将被激活使用。 -->
  19. <proxies>
  20. <!-- 配置代理服务器的相关参数 -->
  21. <proxy>
  22. <!-- 代理标识ID,默认值:default -->
  23. <id>micmiuProxy</id>
  24. <!-- 指定是否激活,默认值:true -->
  25. <active>true</active>
  26. <!-- 指定代理协议,默认值:http -->
  27. <protocol>http</protocol>
  28. <!-- 指定代理认证的用户名 -->
  29. <username>micmiu</username>
  30. <!-- 指定代理认证用户的密码 -->
  31. <password>mypwd</password>
  32. <!-- 指定代理服务器的主机名 -->
  33. <host>micmiu.com</host>
  34. <!-- 指定代理服务的端口 默认值:8080 -->
  35. <port>80</port>
  36. <!-- 指定不被代理的主机名列表。多个用|分隔。 -->
  37. <nonProxyHosts>ctosun.com|ctosun.micmiu.com</nonProxyHosts>
  38. </proxy>
  39. </proxies>
  40. <!-- 这是一个认证配置的列表,系统内部根据配置的serverID使用。认证配置用于maven链接到远程服务 -->
  41. <servers>
  42. <!-- 指定的身份认证信息用于连接到一个特定的服务器时,确定系统内的唯一的名称(简称下面的'id'属性)。 -->
  43. <server>
  44. <!-- 这是server的id(注意不是用户登陆的id)。该id与distributionManagement中repository元素的id必须要匹配。 -->
  45. <id>micmiu-releases</id>
  46. <!-- 服务器认证的用户名 -->
  47. <username>michael</username>
  48. <!-- 服务器认证的用户对应的密码 -->
  49. <password>mypwd</password>
  50. </server>
  51. <!-- 另一个示例 私钥/密码 -->
  52. <server>
  53. <id>micmiu-snapshots</id>
  54. <!-- 认证时使用的私钥文件。 -->
  55. <privateKey>/home/micmiu/.ssh/id_dsa</privateKey>
  56. <!-- 认证时使用的私钥密码,没有密码就设为空 -->
  57. <passphrase>mypwd</passphrase>
  58. <!-- 目录被创建时的权限设置。其值对应了unix文件系统的权限,如664,或者775 -->
  59. <directoryPermissions>775</directoryPermissions>
  60. <!-- 仓库文件创建时的权限设置。其值对应了unix文件系统的权限,如664,或者775。 -->
  61. <filePermissions>664</filePermissions>
  62. </server>
  63. </servers>
  64. <!-- 指定镜像列表,用于从远程仓库下载资源 -->
  65. <mirrors>
  66. <!-- 指定仓库的镜像站点,代替一个给定的库。该镜像藏库有一个ID相匹配的mirrorOf元素。 ID是用于继承和直接查找目的,必须是唯一的。 -->
  67. <mirror>
  68. <!--该镜像的唯一标识符。id用来区分不同的mirror元素。 -->
  69. <id>mirrorId</id>
  70. <!--被镜像的服务器的id,比如:central,不能和id匹配。 -->
  71. <mirrorOf>central</mirrorOf>
  72. <name>micmiu for dev.</name>
  73. <url>http://dev.micmiu.com/repo/maven2</url>
  74. </mirror>
  75. </mirrors>
  76. <!-- 这是一个可以在各种不同的方式激活的配置文件列表,并可以修改构建过程。在settings.xml中提供的信息, 旨在提供本地机器允许建立在本地环境中工作的具体路径和库位置。有多种方式可以激活配置属性:一种在settings.xml中<activeProfiles>指定;
  77. 另一种实质上依赖于系统属性,无论是匹配特定的属性值或只是测试到它的存在.配置文件也可以根据JDK版本的前缀进行激活,1.4 可以激活1.4.2_07
  78. 注:对于在settings.xml中定义的配置,你仅限于指定资源仓库、插件仓库和用于插件在POM中变量的自由形式属性的定义 -->
  79. <profiles>
  80. <!-- 指定生成过程的介绍,使用一个或多个上述机制被激活。对于继承而言,激活通过<activatedProfiles/>或命令行配置文件,
  81. 配置文件必须有一个唯一的ID。此配置文件的例子使用的JDK版本触发激活。 -->
  82. <profile>
  83. <!--该配置的唯一标识符。 -->
  84. <id>jdk-1.4</id>
  85. <!--自动触发配置文件的逻辑定义。Activation的逻辑配置决定了是否开启该profile。activation元素并不是激活profile的唯一方式。
  86. settings.xml文件中的activeProfile元素可指定需要激活的profile的id。 profile也可以通过在命令行,使用-P标记和逗号分隔的列表来显式的激活 -->
  87. <activation>
  88. <!--指定是否激活的标识 默认值为false -->
  89. <activeByDefault>false</activeByDefault>
  90. <!--当匹配的jdk被检测到,profile被激活。例如,1.4激活JDK1.4,1.4.0_2,而!1.4激活所有不是以1.4开头的JDK版本。 -->
  91. <jdk>1.4</jdk>
  92. <!-- 当检测到匹配的操作系统属性时,指定该配置文件将被激活, -->
  93. <os>
  94. <!--激活profile的操作系统的名字 -->
  95. <name>windows 7</name>
  96. <!--激活profile的操作系统所属家族(如 'windows') -->
  97. <family>windows</family>
  98. <!--激活profile的操作系统体系结构 -->
  99. <arch>x86</arch>
  100. <!--激活profile的操作系统版本 -->
  101. <version>6.1</version>
  102. </os>
  103. <!-- 检测系统对应的属性和值(该值可在POM中通过${属性名称}引用),配置就会被激活。 如果值字段是空的,那么存在属性名称字段就会激活 -->
  104. <property>
  105. <!-- 属性的名称 -->
  106. <name>mavenVersion</name>
  107. <!-- 属性的值 -->
  108. <value>3.0.4</value>
  109. </property>
  110. <!-- 通过检测该文件的是否存在来激活配置。missing检查文件是否存在,如果不存在则激活profile;exists则会检查文件是否存在,如果存在则激活。 -->
  111. <file>
  112. <!--如果指定的文件存在,则激活profile。 -->
  113. <exists>/usr/local/micmiu/workspace/myfile</exists>
  114. <!--如果指定的文件不存在,则激活profile。 -->
  115. <missing>/usr/local/micmiu/workspace/myfile</missing>
  116. </file>
  117. </activation>
  118. <!-- 对应profile的扩展属性列表。Maven属性和Ant中的属性一样,可以用来存放一些值。这些值可以在POM中的任何地方使用标记${X}来使用,
  119. 这里X是指属性的名称。属性有五种不同的形式,并且都能在settings.xml文件中访问。 1\. env.X: 表示系统环境变量。例如,"env.PATH"
  120. 等同于 $path环境变量(在Windows上是%PATH%)。 2\. project.x:表示 POM中对应的属性值。 3\. settings.x:
  121. 表示 settings.xml中对应属性值。 4\. Java系统属性: 所有可通过java.lang.System.getProperties()访问的属性都能在POM中使用该形式访问。
  122. 5\. x: 在<properties/>元素中,或者外部文件中设置,以${someVar}的形式使用。 -->
  123. <properties>
  124. <user.blog>www.micmiu.com</user.blog>
  125. </properties>
  126. </profile>
  127. <!-- 这是另一个配置文件,根据系统属性来激活 -->
  128. <profile>
  129. <!--该配置的唯一标识符。 -->
  130. <id>env-dev</id>
  131. <activation>
  132. <property>
  133. <!-- 被用来激活配置文件的属性的名称 -->
  134. <name>target-env</name>
  135. <!-- 被用来激活配置文件的属性的值 -->
  136. <value>dev</value>
  137. </property>
  138. </activation>
  139. <!-- 指定配置文件的扩展配置 内容采取property.value的形式 -->
  140. <properties>
  141. <tomcatPath>/path/to/tomcat/instance</tomcatPath>
  142. </properties>
  143. </profile>
  144. <profile>
  145. <id>repo-dev</id>
  146. <!-- 配置远程仓库列表 -->
  147. <repositories>
  148. <!-- 远程仓库的配置信息 -->
  149. <repository>
  150. <!-- 远程仓库唯一标识 -->
  151. <id>nexus</id>
  152. <!-- 远程仓库名称 -->
  153. <name>nexus for develop</name>
  154. <!-- 远程仓库URL -->
  155. <url>http://192.168.1.8:8080/nexus/content/groups/public/</url>
  156. <layout>default</layout>
  157. <releases>
  158. <!--是否使用这个资源库下载这种类型的构件 默认值:true -->
  159. <enabled>true</enabled>
  160. <!--指定下载更新的频率。这里的选项是:always(一直),daily(每日,默认值),interval:X(这里X是指分钟),或者never(从不)。 -->
  161. <updatePolicy>daily</updatePolicy>
  162. <!--当Maven验证构件校验文件失败时该怎么做fail(失败)或者warn(告警)。 -->
  163. <checksumPolicy>warn</checksumPolicy>
  164. </releases>
  165. <snapshots>
  166. <!--是否使用这个资源库下载这种类型的构件 默认值:true -->
  167. <enabled>true</enabled>
  168. <!--指定下载更新的频率。这里的选项是:always(一直),daily(每日,默认值),interval:X(这里X是指分钟),或者never(从不)。 -->
  169. <updatePolicy>daily</updatePolicy>
  170. <!--当Maven验证构件校验文件失败时该怎么做fail(失败)或者warn(告警)。 -->
  171. <checksumPolicy>warn</checksumPolicy>
  172. </snapshots>
  173. </repository>
  174. </repositories>
  175. <pluginRepositories>
  176. <pluginRepository>
  177. <id>nexus</id>
  178. <name>local nexus</name>
  179. <url>http://192.168.1.8:8080/nexus/content/groups/public</url>
  180. <layout>default</layout>
  181. <releases>
  182. <enabled>true</enabled>
  183. </releases>
  184. <snapshots>
  185. <enabled>true</enabled>
  186. </snapshots>
  187. </pluginRepository>
  188. </pluginRepositories>
  189. </profile>
  190. </profiles>
  191. <!-- 指定被激活的配置文件 -->
  192. <activeProfiles>
  193. <activeProfile>repo-dev</activeProfile>
  194. </activeProfiles>
  195. </settings>

Maven入门-3.pom文件和settings文件的更多相关文章

  1. Maven实战:pom.xml与settings.xml

    pom.xml与settings.xml pom.xml与setting.xml,可以说是Maven中最重要的两个配置文件,决定了Maven的核心功能,虽然之前的文章零零碎碎有提到过pom.xml和s ...

  2. Eclipse 工程目录下的.classpath、.project文件和.settings文件作用

    1..classpath 定义了你这个项目在编译时所使用的$CLASSPATH (注: 每次在更新jar的版本或者增加jar之后,请在SVN提交.classpath文件,否则工程的build path ...

  3. maven学习之pom.xml或settings.xml对nexus的配置(转)

    (1)在POM中配置Nexus仓库 <project>         ...         <repositories>            <repository ...

  4. Maven入门2-pom.xml文件与settings.xml文件

    Maven入门2-pom.xml文件与settings.xml文件 本文内容来源于官网文档部分章节,settings.xml文件:参考http://maven.apache.org/settings. ...

  5. Maven快速入门(四)Maven中的pom.xml文件详解

    上一章,我们讲了Maven的坐标和仓库的概念,介绍了Maven是怎么通过坐标找到依赖的jar包的.同时也介绍了Maven的中央仓库.本地仓库.私服等概念及其作用.这些东西都是Maven最基本.最核心的 ...

  6. [maven] settings 文件节点配置详解

    基本结构 <settings xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3. ...

  7. Eclipse 配置 maven 的两个 settings 文件

    eclipse配置的settings文件名完全可以自定义,而本机maven只认识settings.xml文件. eclipse里配置maven有一个叫全局的,有一个叫用户的.这两个文件可以和本机mav ...

  8. maven项目的pom.xml文件详解

    <project xmlns="http://maven.apache.org/POM/4.0.0 " 2 xmlns:xsi="http://www.w3.org ...

  9. Maven学习总结(十一)——Maven项目对象模型pom.xml文件详解

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

随机推荐

  1. 再谈树---无根树转有根树( dfs搜索转化+fa数组记录父节点) *【模板】

    #include <stdio.h> #include <string.h> #include <stdlib.h> #include <vector> ...

  2. EF、Repository、Factory、Service间关系

    EF和Repository 实体(Entities):具备唯一ID,能够被持久化,具备业务逻辑,对应现实世界业务对象. 值对象(Value objects):不具有唯一ID,由对象的属性描述,一般为内 ...

  3. 【jdk源码分析】java.lang.Appendable

    1.概述 public interface Appendable 能够被添加 char 序列和值的对象.如果某个类的实例打算接收取自 Formatter 的格式化输出,那么该类必须实现 Appenda ...

  4. 【Coursera】Security Introduction -Eighth Week(1)

    Security Introduction People With Bad Intent 今天,Bob 向 Alice 发送了一条 "Hello,Allice!" 的信息,他们希望 ...

  5. [POJ1958][Strange Tower of Hanoi]

    题目描述 求解 \(n\) 个盘子 \(4\) 座塔的 Hanoi 问题最少需要多少步 问题分析 考虑 \(3\) 座塔的 Hanoi 问题,记 \(f[i]\) 表示最少需要多少步, 则 \(f[i ...

  6. UVa 10905 孩子们的游戏

    https://vjudge.net/problem/UVA-10905 题意: 给定n个正整数,把它们连接成一个最大的整数. 思路: 实在是没想到直接用string来排序了. #include< ...

  7. python 字符串输出转义{}

    >>> print ("{} 对应的位置是 {{0}}".format("runoob")) runoob 对应的位置是 {}

  8. 《剑指offer》第十六题(数值的整数次方)

    // 面试题:数值的整数次方 // 题目:实现函数double Power(double base, int exponent),求base的exponent // 次方.不得使用库函数,同时不需要考 ...

  9. Codeforces 861D - Polycarp's phone book

    861D - Polycarp's phone book 思路:用map做的话,只能出现一次循环,否则会超时. 代码: #include<bits/stdc++.h> using name ...

  10. Codeforces 847E - Packmen

    847E - Packmen 思路:二分时间. 代码: #include<bits/stdc++.h> using namespace std; #define ll long long ...