下载安装包:http://maven.apache.org/download.cgi
配置环境变量:**/apache-maven-3.5.2/bin 测试:mvn -v
设置setting.xml
- 顶层标签
<localRepository>:这个值是这个构建系统的本地仓库的路径,默认值:$ {user.home}/.m2/ repository。这个元素对于主构建服务器特别有用,允许所有登录用户从一个公共的本地存储库进行构建。
<interactiveMode>:真正的如果Maven的应该尝试与用户输入交互,假如果不是。默认为true。
<usePluginRegistry>:如果Maven应该使用$ {user.home} /.m2/plugin-registry.xml文件来管理插件版本,则为true,默认为false。请注意,对于当前版本的Maven 2.0,不应该依赖plugin-registry.xml文件。现在考虑休眠。
<offline>:如果此构建系统应以离线模式运行,则为true,默认为false。由于网络设置或安全原因,此元素对于构建无法连接到远程存储库的服务器非常有用。
- 插件
<pluginGroups>:这个元素包含一个pluginGroup元素的列表
<pluginGroup>:<pluginGroups>的子标签,每个元素都包含一个groupId。当使用插件并且在命令行中没有提供groupId时,搜索列表。这个列表自动包含org.apache.maven.plugins和org.codehaus.mojo。
-
服务
下载和部署的repositories(存储库) 由POM 的repositories 和distributionManagement元素定义。但是,某些设置(如用户名和密码)不应与pom.xml一起分发。这种类型的信息应该在settings.xml中的构建服务器上存在。
<servers>
<server>
//这是与Maven试图连接的资源库/镜像的id元素相匹配的服务器(不是用户登录的)的ID。
<id>server001</id>
//这些元素显示为一对,表示向该服务器进行身份验证所需的登录名和密码。
<username>my_login</username>
<password>my_password</password>
//和前面的两个元素一样,如果需要的话,这一对指定一个私钥的路径(默认是$ {user.home} /。ssh / id_dsa)和密码。该密码和密码的元素可能在将来被外部化,但现在他们必须设置在纯文本的settings.xml文件。
<privateKey>${user.home}/.ssh/id_dsa</privateKey>
<passphrase>some_passphrase</passphrase>
//在部署中创建存储库文件或目录时,这些是要使用的权限。每个的合法值是一个三位数的数字,相当于* nix文件的权限,即。664或775。
<filePermissions>664</filePermissions>
<directoryPermissions>775</directoryPermissions>
<configuration></configuration>
</server>
</servers>
- 镜像
<mirrors>
<mirror>
//这个镜像的唯一标识符和用户友好的名字。该id用于区分镜像元素,并在连接镜像时从<servers>部分选择相应的凭据
<id>planetmirror.com</id>
<name>PlanetMirror Australia</name>
//这个镜像的基本URL。构建系统将使用此URL来连接到存储库,而不是原始存储库URL。
<url>http://downloads.planetmirror.com/pub/maven2</url>
//这是一个镜像的存储库的ID。例如,要指向Maven 中央存储库(https://repo.maven.apache.org/maven2/)的镜像,请将此元素设置为中央。更高级的映射,如repo1,repo2或*,!inhouse也是可能的。这不能与镜像ID匹配。
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
- 代理
<proxies>
<proxy>
//此代理的唯一标识符。这用于区分代理元素。
<id>myproxy</id>
//如果此代理处于活动状态,则为true。这对于声明一组代理是有用的,但是一次只能激活一个代理。
<active>true</active>
//代理的协议://主机:端口,分离成离散的元素。
<protocol>http</protocol>
<host>proxy.somewhere.com</host>
<port>8080</port>
//这些元素显示为一对,表示对此代理服务器进行身份验证所需的登录名和密码。
<username>proxyuser</username>
<password>somepassword</password>
//这是不应代理的主机列表。列表的分隔符是代理服务器的预期类型; 上面的例子是管道分隔的 - 逗号分隔也是常见的。
<nonProxyHosts>*.google.com|ibiblio.org</nonProxyHosts>
</proxy>
</proxies>
-
简介
<profiles>
<profile>
<id>test</id>
<activation>
<activeByDefault>false</activeByDefault>
//激活在jdk元素中有一个以Java为核心的内置检查。如果测试在与给定的前缀匹配的jdk版本号下运行,这将激活。在上面的例子中,1.5.0_06将匹配。
<jdk>1.5</jdk>
//os元素可以定义上面显示的一些操作系统特定的属性。
<os>
<name>Windows XP</name>
<family>Windows</family>
<arch>x86</arch>
<version>5.1.2600</version>
</os>
//如果Maven检测到对应的name = value对的一个属性(可以在POM中取消引用的值{$ name}),该配置文件将激活。
<property>
<name>mavenVersion</name>
<value>2.0.3</value>
</property>
//一个给定的文件名可能通过文件的存在或缺少文件来激活配置文件。
<file>
<exists>${basedir}/file2.properties</exists>
<missing>${basedir}/file1.properties</missing>
</file>
</activation>
</profile>
</profiles>
- 属性
如果此配置文件处于活动状态,则可以从POM访问属性$ {user.install}。
<profiles>
<profile>
<properties>
<user.install>${user.home}/our-project</user.install>
</properties>
</profile>
</profiles>
- 库
存储库是Maven用来填充构建系统的本地存储库的项目的远程集合。从这个本地存储库,Maven称之为插件和依赖关系。不同的远程存储库可能包含不同的项目,在活动配置文件下,可能会搜索匹配的发行版或快照工件。
<profiles>
<profile>
<repositories>
<repository>
<id>codehausSnapshots</id>
<name>Codehaus Snapshots</name>
//releases、snapshots这些是每种类型的工件(发行版或快照)的策略。有了这两套,一个POM就可以在一个存储库中改变每个类型的策略,而与另一个类型的策略无关。例如,可能决定只启用快照下载,可能用于开发目的。
//enabled对于是否为相应类型(发行版或快照)启用此存储库,为true或false。
//updatePolicy该元素指定更新尝试发生的频率。Maven会将本地POM的时间戳(存储在存储库的maven-metadata文件中)与远程进行比较;选项是:始终always,每天(默认)daily ,区间interval:X(其中X是以分钟为单位的整数)或从不never。
//checksumPolicy当Maven将文件部署到资源库时,它也会部署相应的校验和文件。您的选择是忽略,失败或警告缺少或不正确的校验和。
<releases>
<enabled>false</enabled>
<updatePolicy>always</updatePolicy>
<checksumPolicy>warn</checksumPolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
<checksumPolicy>fail</checksumPolicy>
</snapshots>
<url>http://snapshots.maven.codehaus.org/maven2</url>
<layout>default</layout>
</repository>
</repositories>
<pluginRepositories>
...
</pluginRepositories>
</profile>
</profiles>
- 活动配置文件
每个元素都有一个配置文件 ID的值。任何轮廓 ID定义为activeProfile将被激活,reguardless的任何环境设置。如果没有找到匹配的配置文件,将不会发生 例如,如果env-test是一个activeProfile,那么一个pom.xml文件(或者带有一个corrosponding id的profile.xml文件)将被激活,如果没有找到这个配置文件,那么执行将继续正常。
<activeProfiles>
<activeProfile>env-test</activeProfile>
</activeProfiles>