使用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;
}
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就是后话了~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,302评论 19 139
  • |-1-更新内容[6.从仓库解析依赖的机制(重要)] 1Maven仓库作用 仓库用来存储所有项目使用到构件,在ma...
    zlcook阅读 11,388评论 0 25
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,014评论 6 342
  • 首先私服是一种衍生出来的特殊的Maven远程仓库,构建私服的好处请看3.5私服 可以帮助大家建立私服的仓库管理软件...
    zlcook阅读 13,615评论 0 32
  • 今天看了一篇文章,里面有一句话,就是谢谢你的出现,够我留恋好多年,一下子触动心弦,突然想写点什么。 其实我挺恨你的...
    不问归期1006阅读 3,130评论 0 0