Maven 3.2 需要 JDK 1.6, Maven 3.0/3.1 需要 JDK 1.5
· 解压.
· 环境变量 M2_HOME
· M2 = %M2_HOME%\bin 同时也添加到PATH
· 可选的: MAVEN_OPTS = -Xms256m -Xmx512m -Dmaven.artifact.threads=3 (多线程下载,默认5)
· 当然,也要有JAVA_HOME
运行 mvn –version 测试
有两个settings.xml,跟具体项目或用户无关
- 官方全局设置:$M2_HOME/conf/settings.xml
- 用户设置:${user.home}/.m2/settings.xml
可以直接复制一份作为用户设置
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository/>
<interactiveMode/>
<usePluginRegistry/> 无用
<offline/>
<pluginGroups/>
<servers/> 略
<mirrors/> 略
<proxies/> 略
<profiles/>
<activeProfiles/>
</settings>
里面的设置可以用表达式的:
- ${user.home} 系统变量,就是java里能用System.getProperty取到的
- ${env.HOME} 环境变量,就是System.getProperty("java.library.path")
但 profiles 里定义的属性不能这样引用
<localRepository>${user.home}/.m2/repository</localRepository> 本地代码库位置,必须为绝对路径
<interactiveMode>true</interactiveMode> 是否提示,选择123
<usePluginRegistry>false</usePluginRegistry>
<offline>false</offline> 默认总是联机
<pluginGroups>
<pluginGroup>org.mortbay.jetty</pluginGroup> 默认org.apache.maven.plugins , org.codehaus.mojo
</pluginGroups>
如果像上面这样设置了,要运行org.mortbay.jetty:jetty-maven-plugin:run
就可以直接 mvn jetty:run
Setting.xml的profile是 pom.xml里 profile的压缩版. 包括了
activation(激活条件), repositories, pluginRepositories , properties(可定义特定属性)
因为他只关心全局设置,跟具体项目无关
如果生效,将覆盖具体的 POM或 profiles.xml设置
1.
<profiles>
<profile>
<id>test</id>
<activation> 激活条件,要全部匹配
<activeByDefault>false</activeByDefault>默认激活
<jdk>1.5</jdk>
<os>
<name>Windows XP</name>
<family>Windows</family>
<arch>x86</arch>
<version>5.1.2600</version>
</os>
<property>如果有某个属性符合(Maven3中也搜索Settings.xml)
<name>mavenVersion</name>
<value>2.0.3</value>没有value也可,表示只要定义过
</property>
<file>
<exists>${basedir}/file2.properties</exists>
<missing>target/generated-sources/axistools/wsdl2java/org/apache/maven</missing>如果某个文件不存在
</file>
</activation>
...
</profile>
</profiles>
2.
<profiles>
<profile>
...
<properties> 生效时的特定属性
<user.install>${user.home}/our-project</user.install>
</properties>
...
</profile>
</profiles>
Profile里的properties可以在pom.xml用表达式${xx}任意引用,具体可以有以下方式:
- env.X: 环境变量,如${env.PATH}
- project.x 或 pom.x: 对应 POM.xml 的某个元素,如${project.version}
- settings.x: 对应 settings.xml 某个元素 ,如${settings.offline}
- 所有能用 java.lang.System.getProperties() 访问的, 比如 ${java.home}
- x:就是 <properties /> 定义的,如 ${user.install}.当然这个profile要先激活
3.
<profiles>
<profile>
...
<repositories> 具体代码库
<repository>
<id>codehausSnapshots</id>
<name>Codehaus Snapshots</name>
<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>
<updatePolicy>可以是以下值:always, daily (默认), interval:X (几分钟) ,never.
<checksumPolicy>可以是以下值:ignore, fail, warn
4.pluginRepositories 插件代码库,结构同上
activation 并不是让profile生效的唯一方式. activeProfile 里也可以
<activeProfiles>
<activeProfile>env-test</activeProfile> profile的id
</activeProfiles>
将会在pom.xml和profile.xml中寻找该profile(Maven3已不再使用profile.xml)
也可以在命令行中 –p 显式启用
mvn groupId:artifactId:goal -P profile-1,profile-2
或显示禁用
mvn groupId:artifactId:goal -P !profile-1,!profile-2
mvn help:active-profiles 可查看当前启用的profile