前言

最近由于项目需要,应上级要求为公司搭建了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

  1. 在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
    
  2. 然后解压:
    tar -zxvf apache-maven-3.3.9-bin.tar.gz
    
  3. 配置 Maven 环境变量:
    vi /etc/profile
    
    在文件最后添加以下信息:
    export MAVEN_HOME=/home/maven/apache-maven-3.3.9
    export PATH=$PATH:$MAVEN_HOME/bin
    
    让系统重新加载/etc/profile :
    source /etc/profile
    
  4. 验证 Maven 是否安装成功:
    mvn -version
    

安装 Nexus

  1. 在Linux上,可以直接用命令下载 Nexus 安装文件:
    cd /home/maven
    wget https://sonatype-download.global.ssl.fastly.net/nexus/oss/nexus-2.14.0-01-bundle.tar.gz
    
  2. 然后解压:
    tar -zxvf nexus-2.14.0-01-bundle.tar.gz
    
    解压后的两个目录:nexus-2.14.0-01中是nexus的核心文件,sonatype-work,会将下载来的开发包放置在其中。
  3. 配置 Nexus 以 root 用户启动:
    vi /home/maven/nexus-2.14.0-01/bin/nexus
    
    在第23行修改为
    RUN_AS_USER=root
    
  4. 启动 Nexus
    cd /home/maven/nexus-2.14.0-01/bin
    ./nexus start
    
    默认端口为:8081
  5. 设置 Nexus 开机启动
    vi /etc/rc.d/rc.local
    
    添加以下内容:
    /home/maven/nexus-2.14.0-01/bin/nexus start
    
    至此,服务器端 Maven 私服搭建完成!

配置 Nexus

  1. 在本机登录 Nexus:
    http://192.168.10.60:8081/nexus/
    如出现以下界面表示搭建成功:

    Nexus
    Nexus
  2. 点击右上角的Log In即可登录:
    默认用户名:admin,密码:admin123
    修改密码点击:admin->Profile->Change Password 即可。

    Admin
    Admin
  3. 点击左侧的Repositories即可看到初始创建的仓库:

    Repositories
    Repositories

我们可以看到这些仓库的类型有:group、hosted、proxy、virtual。

  • group,仓库组,用来合并多个hosted/proxy仓库,通常我们配置maven依赖仓库组。
  • hosted,本地代理仓库,通常我们会部署自己的构件到这一类型的仓库。
  • proxy,代理的远程仓库,它们被用来代理远程的公共仓库,如maven中央仓库。
  • virtual,这种是maven1的,很少会用到。
  1. Apache SnapshotsCentral 仓库的 Configuration 中的 Download Remote Indexes 设置为 True:

    ApacheSnapshots
    ApacheSnapshots
    Central
    Central
  2. Releases仓库的Deployment Policy设置为 Allow ReDeploy:

    Releases
    Releases
  3. 手动添加第三方jar到 Maven 私服中:

    Uploadjar
    Uploadjar

然后点击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

IDEA
IDEA

至此,Maven 项目引用私服jar完成!

配置全局私服

以上只是在单个 Maven 项目中使用 Maven 私服,每次新建项目都要进行配置一下,比较麻烦。要想使每个新建的 Maven 项目都可以使用 Maven 私服,可以修改全局配置文件。

Maven 项目使用自定义配置文件

  1. 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到自定义目录。
    Maven
    Maven
  1. 然后打开settings.xml修改一下内容:
    ` H:/Android/Work/Maven/repository


profile-nexus



nexus
http://192.168.10.60:8081/nexus/content/groups/public/
true
true




nexus
http://192.168.10.60:8081/nexus/content/groups/public/
true
true






public
Nexus Public Repositories
http://192.168.10.60:8081/nexus/content/groups/public/
central

3. 选中**Maven Projects**中**Profile**下的**profile-nexus**复选框:
{% image /img/Blog-Maven/Profiles.png 'Profiles' '' %}

4. 配置项目**pom.xml**文件,添加 dependency 依赖:


4.0.0

<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>


`
由此可见,此时pom.xml文件简练了很多!

参考文章

  1. Linux 使用nexus搭建maven私服
  2. maven私服搭建及gradle上传
  3. CentOS设置程序开机自启动的方法
  4. Maven的本地仓库、中心仓库、私服(NEW)
  5. 【maven基础】maven私服搭建和使用
  6. Maven 仓库使用与私有仓库搭建