美文网首页
使用Nginx搭建轻量化Maven私服

使用Nginx搭建轻量化Maven私服

作者: with_prototype | 来源:发表于2017-08-16 17:53 被阅读0次
    首先要说,这是一个轻量化方案,存在不完美。最周全的方案,是使用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;
    }
    
    image.png

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

    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. 配置发布配置,将构建结果发布至私服,首先需要添加构建地址

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

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

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

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

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

    nexus就是后话了~

    相关文章

      网友评论

          本文标题:使用Nginx搭建轻量化Maven私服

          本文链接:https://www.haomeiwen.com/subject/otxwrxtx.html