以下几个属性是settings
属性的下一级属性:
localRepository
interactiveMode
offline
pluginGroups
proxies
servers
mirrors
profiles
activeProfiles
localRepository:本地仓库的路径,默认值为 ${user.home}/.m2/repository
<localRepository>usr/local/mavenlocalRepository>
interactiveMode:表示Maven是否需要和用户交互以获得输入
<interactiveMode>trueinteractiveMode>
offline:表示Maven是否需要在离线模式下运行
<offline>falseoffline>
pluginGroups:插件列表
<pluginGroups>
<pluginGroup>org.codehaus.mojopluginGroup>
pluginGroups>
proxies:代理列表,用来配置不同的代理,可以在这台机器上用来连接到网络
<proxies>
<proxy>
<id>myproxyid>
<active>trueactive>
<protocol>httpprotocol>
<host>proxy.somewhere.comhost>
<port>8080port>
<username>proxyuserusername>
<password>somepasswordpassword>
<nonProxyHosts>*.google.com|ibiblio.orgnonProxyHosts>
proxy>
proxies>
servers:表示服务端的一些配置,一些设置如安全证书不应该和pom.xml一起分发,这种类型的信息应该存在于构建服务器上的settings.xml文件中。
<servers>
<server>
<id>server001id>
<username>my_loginusername>
<password>my_passwordpassword>
<privateKey>${usr.home}/.ssh/id_dsaprivateKey>
<passphrase>some_passphrasepassphrase>
<filePermissions>664filePermissions>
<directoryPermissions>775directoryPermissions>
server>
servers>
mirrors:为仓库列表配置的下载镜像列表
<mirrors>
<mirror>
<id>nexus-aliyunid>
<mirrorOf>centralmirrorOf>
<name>Nexus aliyunname>
<url>http://maven.aliyun.com/nexus/content/groups/publicurl>
mirror>
mirrors>
profiles:表示根据环境参数,来调整构建配置的列表。
activation:控制profile在那种条件下会被激活。
1.4
1.4表示激活JDK1.4、1.4.0_2,而!1.4
表示激活所有不以1.4开头的JDK版本repositories:远程仓库列表,它是Maven用来填充构建系统本地仓库所使用的一组远程项目。
<profiles>
<profile>
<id>testid>
<activation>
<activeByDefault>falseactiveByDefault>
<jdk>1.5jdk>
<os>
<name>Windows XPname>
<family>Windowsfamily>
<arch>x86arch>
<version>5.1.2600version>
os>
<property>
<name>mavenVersionname>
<value>2.0.3value>
property>
<file>
<exists>${basedir}/file2.propertiesexists>
<missing>${basedir}/file1.propertiesmissing>
file>
activation>
<repositories>
<repository>
<id>codehausSnapshotsid>
<name>Codehaus Snapshotsname>
<url>http://snapshots.maven.codehaus.org/maven2url>
<layout>defaultlayout>
<releases>
<enabled>trueenabled>
<updatePolicy>alwaysupdatePolicy>
<checksumPolicy>warnchecksumPolicy>
releases>
<snapshots>
<enabled>falseenabled>
<updatePolicy>alwaysupdatePolicy>
<checksumPolicy>warnchecksumPolicy>
snapshots>
repository>
repositories>
<pluginRepositories>
<pluginRepository>
<id>codehausSnapshotsid>
<name>Codehaus Snapshotsname>
<url>http://snapshots.maven.codehaus.org/maven2url>
<layout>defaultlayout>
<releases>
<enabled>trueenabled>
<updatePolicy>alwaysupdatePolicy>
<checksumPolicy>warnchecksumPolicy>
releases>
<snapshots>
<enabled>falseenabled>
<updatePolicy>alwaysupdatePolicy>
<checksumPolicy>warnchecksumPolicy>
snapshots>
pluginRepository>
pluginRepositories>
profile>
profiles>
activeProfiles:手动激活profiles的列表,按照profile被应用的顺序定义activeProfile。任何在activeProfile中定义的profile id,不论环境设置如何,其对应的profile都会被激活。如果没有匹配的profile,则什么都不会发生。
例如,env-test是一个activeProfile,则在pom.xml(或者profile.xml)中对应id的profile会被激活。如果运行过程中找不到这样一个profile,Maven则会像往常一样运行。
<activeProfiles>
<activeProfile>env-testactiveProfile>
activeProfiles>
POM( Project Object Model)
:项目对象模型,是 Maven 工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖等。
执行任务或目标时,Maven 会在当前目录中查找 POM,它读取 POM,获取所需的配置信息,然后执行目标。
POM 中可以指定以下配置:
<modelVersion> 4.0.0 modelVersion>
<packaging> jar packaging>
<groupId>xxxgroupId>
<artifactId>xxxartifactId>
<version> 1.0-SNAPSHOT version>
<name> xxx-maven name>
<url> http://maven.apache.org url>
<description> A maven project to study maven. description>
<parent>
<artifactId>xxxartifactId>
<groupId>xxxgroupId>
<version>xxxversion>
<relativePath>xxxrelativePath>
parent>
<prerequisites>
<maven>maven>
prerequisites>
<issueManagement>
<system> jira system>
<url> http://jira.baidu.com/banseon url>
issueManagement>
<ciManagement>
<system>system>
<url>url>
<notifiers>
<notifier>
<type>type>
<sendOnError>sendOnError>
<sendOnFailure>sendOnFailure>
<sendOnSuccess>sendOnSuccess>
<sendOnWarning>sendOnWarning>
<address>address>
<configuration>configuration>
notifier>
notifiers>
ciManagement>
<inceptionYear>inceptionYear>
<mailingLists>
<mailingList>
<name> Demo name>
<post> [email protected] post>
<subscribe> [email protected] subscribe>
<unsubscribe> [email protected] unsubscribe>
<archive> http:/hi.baidu.com/banseon/demo/dev/ archive>
mailingList>
mailingLists>
<developers>
<developer>
<id> HELLO WORLD id>
<name> banseon name>
<email> [email protected] email>
<url>url>
<roles>
<role> Project Manager role>
<role> Architect role>
roles>
<organization> demo organization>
<organizationUrl> http://hi.baidu.com/xxx organizationUrl>
<properties>
<dept> No dept>
properties>
<timezone> -5 timezone>
developer>
developers>
<contributors>
<contributor>
<name>name>
<email>email>
<url>url>
<organization>organization>
<organizationUrl>organizationUrl>
<roles>
<role> Project Manager role>
<role> Architect role>
roles>
<timezone>timezone>
<properties>
<dept> No dept>
properties>
contributor>
contributors>
<licenses>
<license>
<name> Apache 2 name>
<url> http://www.baidu.com/banseon/LICENSE-2.0.txt url>
<distribution> repo distribution>
<comments> A business-friendly OSS license comments>
license>
licenses>
<scm>
<connection>
scm:svn:http://svn.baidu.com/banseon/maven/banseon/banseon-maven2-trunk(dao-trunk)
connection>
<developerConnection>
scm:svn:http://svn.baidu.com/banseon/maven/banseon/dao-trunk
developerConnection>
<tag>tag>
<url> http://svn.baidu.com/banseon url>
scm>
<organization>
<name> demo name>
<url> http://www.baidu.com/banseon url>
organization>
<build>
<sourceDirectory>sourceDirectory>
<scriptSourceDirectory>scriptSourceDirectory>
<testSourceDirectory>testSourceDirectory>
<outputDirectory>outputDirectory>
<testOutputDirectory>testOutputDirectory>
<extensions>
<extension>
<groupId>groupId>
<artifactId>artifactId>
<version>version>
extension>
extensions>
<defaultGoal>defaultGoal>
<resources>
<resource>
<targetPath>targetPath>
<filtering>filtering>
<directory>directory>
<includes>
<include>include>
includes>
<excludes>
<exclude>exclude>
excludes>
resource>
resources>
<testResources>
<testResource>
<targetPath>targetPath>
<filtering>filtering>
<directory>directory>
<includes>
<include>include>
includes>
<excludes>
<exclude>exclude>
excludes>
testResource>
testResources>
<directory>directory>
<finalName>finalName>
<filters>filters>
<pluginManagement>
<plugins>
<plugin>
<groupId>groupId>
<artifactId>artifactId>
<version>version>
<extensions>true/falseextensions>
<executions>
<execution>
<id>id>
<phase>phase>
<goals>goals>
<inherited>true/falseinherited>
<configuration>configuration>
execution>
executions>
<dependencies>
<dependency>
dependency>
dependencies>
<inherited>true/falseinherited>
<configuration>configuration>
plugin>
plugins>
pluginManagement>
<plugins>
<plugin>
<groupId>groupId>
<artifactId>artifactId>
<version>version>
<extensions>true/falseextensions>
<executions>
<execution>
<id>id>
<phase>phase>
<goals>goals>
<inherited>true/falseinherited>
<configuration>configuration>
execution>
executions>
<dependencies>
<dependency>
dependency>
dependencies>
<inherited>true/falseinherited>
<configuration>configuration>
plugin>
plugins>
build>
<profiles>
<profile>
<id>id>
<activation>
<activeByDefault>true/falseactiveByDefault>
<jdk>jdk版本,如:1.7jdk>
<os>
<name> Windows XP name>
<family> Windows family>
<arch> x86 arch>
<version> 5.1.2600 version>
os>
<property>
<name> mavenVersion name>
<value> 2.0.3 value>
property>
<file>
<exists> /usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/ exists>
<missing> /usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/ missing>
file>
activation>
<build>
<defaultGoal />
<resources>
<resource>
<targetPath>targetPath>
<filtering>filtering>
<directory>directory>
<includes>
<include>include>
includes>
<excludes>
<exclude>exclude>
excludes>
resource>
resources>
<testResources>
<testResource>
<targetPath>targetPath>
<filtering>filtering>
<directory>directory>
<includes>
<include>include>
includes>
<excludes>
<exclude>exclude>
excludes>
testResource>
testResources>
<directory>directory>
<finalName>finalName>
<filters>filters>
<pluginManagement>
<plugins>
<plugin>
<groupId>groupId>
<artifactId>artifactId>
<version>version>
<extensions>true/falseextensions>
<executions>
<execution>
<id>id>
<phase>phase>
<goals>goals>
<inherited>true/falseinherited>
<configuration>configuration>
execution>
executions>
<dependencies>
<dependency>
dependency>
dependencies>
<goals>goals>
<inherited>true/falseinherited>
<configuration>configuration>
plugin>
plugins>
pluginManagement>
<plugins>
<plugin>
<groupId>groupId>
<artifactId>artifactId>
<version>version>
<extensions>true/falseextensions>
<executions>
<execution>
<id>id>
<phase>phase>
<goals>goals>
<inherited>true/falseinherited>
<configuration>configuration>
execution>
executions>
<dependencies>
<dependency>
dependency>
dependencies>
<goals>goals>
<inherited>true/falseinherited>
<configuration>configuration>
plugin>
plugins>
build>
<modules>
<module>module>
modules>
<repositories>
<repository>
<releases>
<enabled><enabled>
<updatePolicy>updatePolicy>
<checksumPolicy>checksumPolicy>
releases>
<snapshots>
<enabled><enabled>
<updatePolicy>updatePolicy>
<checksumPolicy>checksumPolicy>
snapshots>
<id>id>
<name>name>
<url>url>
<layout>layout>
repository>
repositories>
<pluginRepositories>
<pluginRepository>
<releases>
<enabled><enabled>
<updatePolicy>updatePolicy>
<checksumPolicy>checksumPolicy>
releases>
<snapshots>
<enabled><enabled>
<updatePolicy>updatePolicy>
<checksumPolicy>checksumPolicy>
snapshots>
<id>id>
<name>name>
<url>url>
<layout>layout>
pluginRepository>
pluginRepositories>
<dependencies>
<dependency>
dependency>
dependencies>
<reports>reports>
<reporting>reporting>
<dependencyManagement>
<dependencies>
<dependency>
dependency>
dependencies>
dependencyManagement>
<distributionManagement>
distributionManagement>
<properties />
profile>
profiles>
<modules>
<module>module>
modules>
<repositories>
<repository>
<releases>
<enabled><enabled>
<updatePolicy>updatePolicy>
<checksumPolicy>checksumPolicy>
releases>
<snapshots>
<enabled><enabled>
<updatePolicy>updatePolicy>
<checksumPolicy>checksumPolicy>
snapshots>
<id> banseon-repository-proxy id>
<name> banseon-repository-proxy name>
<url> http://192.168.1.169:9999/repository/ url>
<layout> default layout>
repository>
repositories>
<pluginRepositories>
<pluginRepository>
pluginRepository>
pluginRepositories>
<dependencies>
<dependency>
<groupId> org.apache.maven groupId>
<artifactId> maven-artifact artifactId>
<version> 3.8.1 version>
<type> jar type>
<classifier>classifier>
<scope> test scope>
<systemPath>systemPath>
<exclusions>
<exclusion>
<artifactId> spring-core artifactId>
<groupId> org.springframework groupId>
exclusion>
exclusions>
<optional> true optional>
dependency>
dependencies>
<reporting>
<excludeDefaults />
<outputDirectory />
<plugins>
<plugin>
<groupId>groupId>
<artifactId>artifactId>
<version>version>
<inherited>true/falseinherited>
<configuration>configuration>
<reportSets>
<reportSet>
<id>id>
<configuration>configuration>
<inherited>true/falseinherited>
<reports>reports>
reportSet>
reportSets>
plugin>
plugins>
reporting>
<dependencyManagement>
<dependencies>
<dependency>
dependency>
dependencies>
dependencyManagement>
<distributionManagement>
<repository>
<uniqueVersion />
<id> banseon-maven2 id>
<name> banseon maven2 name>
<url> file://${basedir}/target/deploy url>
<layout>layout>
repository>
<snapshotRepository>
<uniqueVersion />
<id> banseon-maven2 id>
<name> Banseon-maven2 Snapshot Repository name>
<url> scp://svn.baidu.com/banseon:/usr/local/maven-snapshot url>
<layout>layout>
snapshotRepository>
<site>
<id> banseon-site id>
<name> business api website name>
<url>
scp://svn.baidu.com/banseon:/var/www/localhost/banseon-web
url>
site>
<downloadUrl />
<relocation>
<groupId>groupId>
<artifactId>artifactId>
<version>version>
<message>message>
relocation>
<status>status>
distributionManagement>
<properties>
<name>valuename>
properties>