使用Nginx搭建轻量化Maven私服

首先要说,这是一个轻量化方案,存在不完美。最周全的方案,是使用nexus oss。
发现nexus的管理成本很大,就从网上找了一些资料,总结出这个方案。
这个方案的有点在于,快速、组件轻量化,因此适用于公司或个人进行小型系统开发。
避免了nexus一系列不必要的环境搭建、配置、用户管理的成本。不完美的地方最后说,读完整篇文章更容易理解。

一、 安装准备

  1. Linux服务器(使用的更多);
  2. Maven 3;
  3. Nginx;
  4. 一个Maven项目(用于测试);

二、 搭建Maven服务器,调整settings.xml配置
设置服务器本地路径

<localRepository>/home/maven/MavenRepository</localRepository>

注:仅当本服务器兼具本机打包,也接收其他客户端mvn deploy,则应该将此路径与后面提到的发布路径统一设置;
搭建Nginx服务器,添加alias,指向Repository路径:

a. 编辑nginx/conf/nginx.conf文件,添加如下(注意,红色路径的结尾一定都要有斜杠,坑了我好长时间),重启nginx服务,访问http://serverip:port/mingya_erp_maven/(这里结尾也要有斜杠),就能够看到目录了,只不过还是个空目录:

location /mingya_erp_maven/ {
    alias /home/maven/mingya_erp_maven/;
    autoindex on;
    client_max_body_size 300M;
}

《使用Nginx搭建轻量化Maven私服》 image.png

b. 配置pom.xml,标识我们的私有仓库。id是pom中对该仓库的标识,随便叫,还是要助于路径结尾的斜杠不能丢

《使用Nginx搭建轻量化Maven私服》 image.png

分别添加repositories和pluginRepositories,这样开发人员拿到这个项目,就可以完全从私服中获取所需的jar包了(前提是要上传jar包到私服,后面会说如何上传)

...  
  <repositories>
    <repository>
        <id>mingya_erp_repository</id>
        <url>http://192.168.64.189:8088/mingya_erp_maven</url>
    </repository>
  </repositories>
  <pluginRepositories>
    <pluginRepository>
        <id>mingya_erp_repository</id>
        <url>http://192.168.64.189:8088/mingya_erp_maven</url>
        <layout>default</layout>
        <snapshots>
          <enabled>false</enabled>
        </snapshots>
        <releases>
          <updatePolicy>never</updatePolicy>
        </releases>
    </pluginRepository>
  </pluginRepositories>
...

c. 配置发布配置,将构建结果发布至私服,首先需要添加构建地址

《使用Nginx搭建轻量化Maven私服》 image.png

      还需要有wagon插件,负责scp上传
    <extensions>
        <extension>
            <groupId>org.apache.maven.wagon</groupId>
            <artifactId>wagon-ssh</artifactId>
            <version>2.10</version>
        </extension>
    </extensions>

《使用Nginx搭建轻量化Maven私服》 image.png

说道最后,scp必须配置用户名、密码,如果卸载pom.xml中,自然没有安全可言,在哪里配置的用户名密码呢?
在开发人员(负责发布的)的本地setting.xml中,配置server,设置用户名,密码

...
    <server>
      <id>mingya_erp_repository</id>
      <username>maven</username>
      <password>123456Aa</password>
    </server>
...

《使用Nginx搭建轻量化Maven私服》 image.png

至此,使用mvn deploy 即可上传构建至私服
但私服中只有构建结果,构建所需的依赖包,比如spring-mvc,能否也保存下来,这样开发人员就可以直接从私服上获取了不是?

d.手工上传系统依赖的构建
到这里,就是这个方案的不足之处了,因为Nginx本身只起到Htttp服务器的作用,没有办法同步中央仓库,使得私服总是少很多依赖的构建。我是把本地仓库拷贝到私服上。这样,当前项目就可以直接通过私服完成开发了。不过一旦引入新的依赖,我还要手工上传。

nexus就是后话了~

    原文作者:with_prototype
    原文地址: https://www.jianshu.com/p/9b1a1082c7e2
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞