前言
最近由于项目需要,应上级要求为公司搭建了Maven私服,Maven 私服搭建的必要性在这里就不多述,现记录搭建过程和使用说明。
准备工作
服务器系统:Centos 6.7
服务器 IP:192.168.10.60
(可选:)
下载 Maven:http://apache.fayea.com/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
下载 Nexus:https://www.sonatype.com/download-oss-sonatype
安装步骤
由于公司的服务器之前已经安装好了JDK,所以就不再需要安装JDK了;否则需要首先安装JDK。
安装 Maven
- 在Linux上,可以直接用命令下载 Maven 安装文件:
mkdir /home/maven && cd /home/maven wget http://apache.fayea.com/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
- 然后解压:
tar -zxvf apache-maven-3.3.9-bin.tar.gz
- 配置 Maven 环境变量:
在文件最后添加以下信息:vi /etc/profile
让系统重新加载/etc/profile :export MAVEN_HOME=/home/maven/apache-maven-3.3.9 export PATH=$PATH:$MAVEN_HOME/bin
source /etc/profile
- 验证 Maven 是否安装成功:
mvn -version
安装 Nexus
- 在Linux上,可以直接用命令下载 Nexus 安装文件:
cd /home/maven wget https://sonatype-download.global.ssl.fastly.net/nexus/oss/nexus-2.14.0-01-bundle.tar.gz
- 然后解压:
解压后的两个目录:nexus-2.14.0-01中是nexus的核心文件,sonatype-work,会将下载来的开发包放置在其中。tar -zxvf nexus-2.14.0-01-bundle.tar.gz
- 配置 Nexus 以 root 用户启动:
在第23行修改为vi /home/maven/nexus-2.14.0-01/bin/nexus
RUN_AS_USER=root
- 启动 Nexus
默认端口为:8081cd /home/maven/nexus-2.14.0-01/bin ./nexus start
- 设置 Nexus 开机启动
添加以下内容:vi /etc/rc.d/rc.local
至此,服务器端 Maven 私服搭建完成!/home/maven/nexus-2.14.0-01/bin/nexus start
配置 Nexus
在本机登录 Nexus:
http://192.168.10.60:8081/nexus/
如出现以下界面表示搭建成功:点击右上角的Log In即可登录:
默认用户名:admin,密码:admin123
修改密码点击:admin->Profile->Change Password 即可。点击左侧的Repositories即可看到初始创建的仓库:
我们可以看到这些仓库的类型有:group、hosted、proxy、virtual。
- group,仓库组,用来合并多个hosted/proxy仓库,通常我们配置maven依赖仓库组。
- hosted,本地代理仓库,通常我们会部署自己的构件到这一类型的仓库。
- proxy,代理的远程仓库,它们被用来代理远程的公共仓库,如maven中央仓库。
- virtual,这种是maven1的,很少会用到。
将Apache Snapshots和Central 仓库的 Configuration 中的 Download Remote Indexes 设置为 True:
将Releases仓库的Deployment Policy设置为 Allow ReDeploy:
手动添加第三方jar到 Maven 私服中:
然后点击Add Artifact,最后点击Upload Artifact(s)即可上传。
查看如下图表示上传成功,若没有可点击Refresh刷新一下。
至此,Maven 私服配置完成!
Maven 项目使用私服仓库
新建 Maven 项目
通过 Intellij IDEA 项目向导新建一个 Maven 项目,创建成功后,打开 pom.xml 文件:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.tjkcht</groupId>
<artifactId>maven</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>maven</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
配置 pom.xml
在pom.xml中配置私服地址,并引用刚刚上传的gson-2.7.jar,最后完整的pom.xml文件如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.tjkcht</groupId>
<artifactId>maven</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>maven</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.gson</groupId>
<artifactId>json</artifactId>
<version>2.7</version>
</dependency>
</dependencies>
<!-- 配置私服地址 -->
<repositories>
<!-- 发布地址 -->
<repository>
<id>nexus</id>
<url>http://192.168.10.60:8081/nexus/content/groups/public/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
<!-- 仓库地址 -->
<repository>
<id>public</id>
<name>Nexus Public Repositories</name>
<url>http://192.168.10.60:8081/nexus/content/groups/public/</url>
</repository>
</repositories>
<!-- 快照地址 -->
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<url>http://192.168.10.60:8081/nexus/content/groups/public/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</pluginRepository>
</pluginRepositories>
</project>
使用jar
运行Maven clean后即可看到External Libraries下有Maven:com.google.gson:json:2.7
至此,Maven 项目引用私服jar完成!
配置全局私服
以上只是在单个 Maven 项目中使用 Maven 私服,每次新建项目都要进行配置一下,比较麻烦。要想使每个新建的 Maven 项目都可以使用 Maven 私服,可以修改全局配置文件。
Maven 项目使用自定义配置文件
- 在Intellij IDEA中点击 File->Settings->Bulid,Execution,Deployment->Bulid Tools->Maven:
- Maven home directory:使用 IDEA 自带的 Maven;
- User settings file:修改为自定义的 settings.xml 文件;
- Local repository:修改为自定义的本地仓库路径。
注意:settings.xml 文件可复制 E:\ProgramFiles\IntelliJ IDEA 2016.2.4\plugins\maven\lib\maven3\conf\settings.xml到自定义目录。
- 然后打开settings.xml修改一下内容:
```H:/Android/Work/Maven/repository
配置项目pom.xml文件,添加 dependency 依赖:
```
4.0.0 com.tjkcht
maven
1.0-SNAPSHOT
jar maven
http://maven.apache.org UTF-8 junit junit 3.8.1 test com.google.gson json 2.7