maven安装配置及pom.xml与setting.xml优先级
虽然我不是开发人员,理论上来说知道怎么配置maven即可。不过在配置bamboo自动化编译平台里有会配置maven,而babmoo的自动编译也会调用maven 。为了更深层的了解一些原理性的东西,还是了解下maven的工作原理,本篇先来说说maven的安装与配置。
一、maven的安装
maven的安装非常简单,不过在安装使用maven之前需要本机先有JDK环境。JDK的安装步骤可以参看 JDK的安装 。
先去 maven.apache.org下载maven,下载完成后在环境变量中进行配置,linux /etc/profile配置中增加如下内容:
1#set for jdk profile
2JAVA_HOME=/usr/local/jdk1.7.0_71
3JRE_HOME=/usr/local/jdk1.7.0_71/jre
4PATH=$PATH:$JAVA_HOME/bin:JRE_HOME/bin
5CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
6export JAVA_HOME JRE_HOME PATH CLASSPATH
7#set for maven
8export PATH=/usr/local/maven/bin:$PATH
上面的配置增加好后,通过source /etc/profile 生效。完了以后,执行mvn -version查看是否有如下输出,有则表示配置正确:
1# mvn -version
2Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
3Maven home: /usr/local/maven
4Java version: 1.7.0_71, vendor: Oracle Corporation
5Java home: /usr/local/jdk1.7.0_71/jre
6Default locale: en_US, platform encoding: UTF-8
7OS name: "linux", version: "2.6.32-504.el6.x86_64", arch: "amd64", family: "unix"
windows下环境变量配置如下:
二、myeclipse中配置maven
JAVA开发人员多会使用IDE工具myeclipse ,在Myeclipse中有自带的maven插件,但是不大好用。可以通过如下配置更改为我们刚刚下载下来的maven :
依次选择window-》perference-》MyEclipse-》Maven4MyEclipse ,如下图
并在maven JDK选择指定JDK的位置并确认。点击Add按钮,添加我们自己的Maven插件,选择刚解压的maven压缩包的文件目录。如下图。
上面的配置完成后,会自动识别到setting.xml配置文件 ,不过也可以在user settting选项中修改,同时可以在这项中指定本地maven源
二、settings.xml与pom.xml 配置
一个java项目通过maven自动下载依赖时,会涉级读取三个配置文件,分别是项目下的pom.xml 文件 、家目录下的.m2/settings.xml 与 maven 全局配置settings.xml ,后面两者不难理解,就像linux下的用户一样,有一个/etc/profile ,用户用目录下还有一个.bash_profile 文件是一样的,用户自定义配置会覆盖全局配置。所以三者的级先是 pom.xml > /home_dir/.m2/settings.xml > /maven_dir/conf/settings.xml 。
1、settings.xml 配置
在settings.xml 中可以指定一个远程mirror镜像源,这里以国内较快的oschina的maven源配置为例,可以通过增加如下配置增加中央仓库远程镜像:
1<mirrors>
2 <mirror>
3 <id>nexus-osc</id>
4 <mirrorOf>*</mirrorOf>
5 <name>Nexus osc</name>
6 <url>http://maven.oschina.net/content/groups/public/</url>
7 </mirror>
8</mirrors>
有些项目还会依赖第三方仓库,可以通过如下配置增加:
1<mirrors>
2 <mirror>
3 <id>nexus-osc</id>
4 <mirrorOf>central</mirrorOf>
5 <name>Nexus osc</name>
6 <url>http://maven.oschina.net/content/groups/public/</url>
7 </mirror>
8 <mirror>
9 <id>nexus-osc-thirdparty</id>
10 <mirrorOf>thirdparty</mirrorOf>
11 <name>Nexus osc thirdparty</name>
12 <url>http://maven.oschina.net/content/repositories/thirdparty/</url>
13 </mirror>
14</mirrors>
需要注意,这里的mirrorOf不是随意指定就行,这里要和你本地仓库或远程仓库里的repo id一致的,不一致会默认走配置的*匹配的源,见下图我本地nexus里的截图:
在执行 Maven 命令的时候, Maven 还需要安装一些插件包,这些插件包的下载地址也让其指向 OSChina 的 Maven 地址。修改如下内容。
1<profile>
2 <id>jdk-1.4</id>
3 <activation>
4 <jdk>1.4</jdk>
5 </activation>
6 <repositories>
7 <repository>
8 <id>nexus</id>
9 <name>local private nexus</name>
10 <url>http://maven.oschina.net/content/groups/public/</url>
11 <releases>
12 <enabled>true</enabled>
13 </releases>
14 <snapshots>
15 <enabled>false</enabled>
16 </snapshots>
17 </repository>
18 </repositories>
19 <pluginRepositories>
20 <pluginRepository>
21 <id>nexus</id>
22 <name>local private nexus</name>
23 <url>http://maven.oschina.net/content/groups/public/</url>
24 <releases>
25 <enabled>true</enabled>
26 </releases>
27 <snapshots>
28 <enabled>false</enabled>
29 </snapshots>
30 </pluginRepository>
31 </pluginRepositories>
32</profile>
oschina也给出了一个修改源后的样例文件 settings.xml ,默认下载下来的依赖包会存放在/home_dir/.m2下,下次再编译该项目时,会先从该目录下找,找不到时才会去远程仓库中download下来到本地仓库中。如果想要修改本地源的这个路径可以通过在setttings.xml 中的如下配置中修改:
1#linux下
2<localRepository>/maven/m2_repo/</localRepository>
3#windows下
4<localRepository>F:/Maven/repo/m2/</localRepository>
配置完成后,就可以使用mvn命令自动编译项目,如下:
1mvn clean compile && mvn clean package
2mvn deploy:deploy-file -DgroupId=com.nujiang.cms -DartifactId=sgcms-plugin-sso -Dversion=1.1.1-SNAPSHOT -Dpackaging=jar -Dfile=D:\sgcms-plugin-sso-1.1.1-SNAPSHOT.jar -Durl=http://192.168.12.6:8081/nexus/content/repositories/snapshots/ -DrepositoryId=nexus-snapshots
第一行中是简单用法,第二行中的是复杂点的用法--无非是多指定了几个参数。
2、pom.xml 配置
pom.xml 虽然也可以指定镜像源仓库,不过一般我们只在配置项目的依赖关系时才会用到,如下这里配置一个单用测试包junit,如下:
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>oschina</groupId>
5 <artifactId>oschina.simple</artifactId>
6 <packaging>war</packaging>
7 <version>1.0</version>
8 <name>oschina.simple Maven Webapp</name>
9 <url>http://maven.apache.org</url>
10 <dependencies>
11 <dependency>
12 <groupId>junit</groupId>
13 <artifactId>junit</artifactId>
14 <version>3.8.1</version>
15 <scope>test</scope>
16 </dependency>
17 </dependencies>
18 <build>
19 <finalName>oschina.simple</finalName>
20 </build>
21 </project>
本篇就先到这里吧,下一篇会结合在《maven in action 》一书中看到的一个简单项目为例,简单的介绍下maven 打包的过程 。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/maven-pom-settings/4863.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.