Maven and Nexus3 原

Maven and Nexus3

Maven是什么?

关于maven的原理,详见:https://my.oschina.net/adailinux/blog/2247017

安装及配置

安装Maven

在centos7系统安装maven很简单,直接使用yum安装就可以,不过在安装maven之前首先要配置系统的 JDK (java)环境。春雨使用ansible进行部署,对应的role是 maven

playbook:

$ cat maven.yml
---
- hosts: ucloud
  gather_facts: False
  roles:
    - role: maven

使用方法:

$ ansible-playbook maven.yml 

安装Nexus

官方建议 服务器硬件配置:

  • CPU:≥4核
  • memory:≥4G (do not set max heap size larger than 4GB
  • fd:65536

安装依赖

  • Java 8
  • maven
  • npm

Java和maven在上面的过程已安装,接下来只需要安装npm,步骤如下:

# 安装之前先创建对应的目录
$ mkdir /home/node
$ cd /home/node

# 使用nodejs管理npm
$ wget https://nodejs.org/dist/v8.12.0/node-v8.12.0-linux-x64.tar.xz

# 解压
$ tar Jxvf node-v8.12.0-linux-x64.tar.xz
$ mv node-v8.12.0-linux-x64 nodejs

# 加入系统环境
$ ln -s /home/node/nodejs/bin/node /usr/bin/node
$ ln -s /home/node/nodejs/bin/npm /usr/bin/npm

# 升级npm
$ npm install npm@latest -g

安装Nexus3

# 创建安装目录
$ mkdir /home/sonatype
$ cd /home/sonatype
$ wget https://download.sonatype.com/nexus/3/latest-unix.tar.gz
$ tar zxvf latest-unix.tar.gz 

$ [root@host1 sonatype]# ls
nexus-3.13.0-01  sonatype-work

## nexus-3.13.0-01 应用文件目录
## sonatype-work 数据文件目录

# 进入应用文件目录
$ cd /home/sonatype/nexus-3.13.0-01

# 运行sonatype
$ ./bin/nexus run
## 输出 Started Sonatype Nexus 表示启动成功!
## 后续会加入systemd管理

启动成功后在浏览器访问(localhost:8081):http://192.168.228.128:8081/ ,进入web界面

使用管理员用户登录,账号:admin 密码:admin123。如果使用sonatype管理用户和密码,可以通过设置——change password来更改密码,如果集成了ldap用户,则无法通过此方法更改密码。

  • 系统优化:

sonatype需要配置系统文件描述符数量为 65536,配置方法如下: # 查看当前系统可打开文件描述符数量 $ ulimit -n # 修改文件描述符数量 ## 临时修改 $ ulimit -n 65535 ## 永久修改 $ vim /etc/security/limits.conf nexus - nofile 65536 如果 加入了systemd管理 nexus,上述方法是不生效的,配置方法如下: $ vim /usr/lib/systemd/system/nexus.service [Unit] Description=nexus service After=network.target [Service] Type=forking LimitNOFILE=65536 ExecStart=/home/sonatype/nexus-3.13.0-01/bin/nexus start ExecStop=/home/sonatype/nexus-3.13.0-01/bin/nexus stop User=nexus Restart=on-abort [Install] WantedBy=multi-user.target $ systemctl daemon-reload $ useradd nexus $ chown -R nexus:nexus /home/sonatype $ systemctl start nexus

集成ldap

配置信息

代理maven和npm组件

配置maven-proxy
  • 更改maven配置 编辑maven的settings.xml文件,更改mirror、profile、activeProfiles模块的内容如下: $ vim /etc/maven/settings.xml <settings> <mirrors> <mirror> <!--This sends everything else to /public --> <id>nexus</id> <mirrorOf>*</mirrorOf> <url>http://localhost:8081/repository/maven-proxy/</url> </mirror> </mirrors> <profiles> <profile> <id>nexus</id> <!--Enable snapshots for the built in central repo to direct --> <!--all requests to nexus via the mirror --> <repositories> <repository> <id>central</id> <url>http://central</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>central</id> <url>http://central</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> <activeProfiles> <!--make the profile active all the time --> <activeProfile>nexus</activeProfile> </activeProfiles> </settings>
  • 配置Nexus,到web端配置:
    • 配置repository:
    • 选择maven2(proxy):
    • 点击“Create repository
  • 创建 POM file (pom.xml)内容如下: $ vim /etc/maven/pom.xml <project> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>nexus-proxy</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> </dependency> </dependencies> </project>
  • 构建maven-proxy: # 构建之前需要先配置一下java环境(mvn命令默认使用/usr/java/latest/bin/java) $ ln -s /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/jre/bin/java /usr/java/latest/bin/java # 开始构建 $ mvn package [INFO] Building jar: /etc/maven/target/nexus-proxy-1.0-SNAPSHOT.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1:27.411s [INFO] Finished at: Tue Oct 09 13:21:33 CST 2018 [INFO] Final Memory: 8M/20M [INFO] ------------------------------------------------------------------------ # 构建完成! 构建过程可以在web界面查看,点击

——点击Components——选择对应的仓库名称(maven-proxy)。

配置npm-proxy
  • 备份已有npm配置文件(.npmrc),如果没有,忽略此步骤;
  • 进入web端,配置Nexus:
    • 配置repository:
    • 选择npm(proxy):
    • 点击“Create repository
  • 进入命令行,配置npm: $ npm config set registry http://localhost:8081/repository/npm-proxy $ vim package.json { "name": "npm-proxy", "version": "0.0.1", "description": "Test Project 1", "dependencies" : { "commonjs" : "0.0.1" } }
  • 构建npm-proxy: $ npm install

管理nexus

Nexus仓库分类
  • hosted 宿主仓库:主要用于部署无法从公共仓库获取的构件(如 oracle 的 JDBC 驱动)以及自己或第三方的项目构件;
  • proxy 代理仓库:代理公共的远程仓库;
  • virtual 虚拟仓库:用于适配 Maven 1;
  • group 仓库组:Nexus 通过仓库组的概念统一管理多个仓库,这样我们在项目中直接请求仓库组即可请求到仓库组管理的多个仓库。

参考文档

https://help.sonatype.com/repomanager3

http://www.mdslq.cn/archives/5f9114b.html

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java技术栈

如何看出一个程序员的技术水平?

如何看出一个程序员的技术能力和水平?这个题目是比较复杂的,它包含的东西比较多,认真讨论能写几万字。如果是专业研究,能写一本书了。

17440
来自专栏CodingToDie

Github 最受欢迎的java项目

1.3K30
来自专栏Java架构师进阶

被标记为事务的方法互相调用的坑(下)

上一节,主要分析了 被标记为事务的方法互相调用,事务失效的原因,思考比较多,这一节主要说说解决方案,思考会少一些。

11020
来自专栏Java架构师进阶

RabbitMQ如何解决各种情况下丢数据的问题

如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135...

29130
来自专栏Java架构师进阶

被标记为事务的方法互相调用的坑(上)

相信大家一定用过Spring中的注解型事务,配合上Spring Boot,只需要在方法上打一个@Transactional 就可以完成,真香。

8510
来自专栏LeetCode

操作系统

线程调度是指系统为线程分配处理器使用权的过程,主要调度方式分两种,分别是协同式线程调度和抢占式线程调度。

12200
来自专栏Java技术栈

10 个深恶痛绝的 Java 异常。。

异常是 Java 程序中经常遇到的问题,我想每一个 Java 程序员都讨厌异常,一 个异常就是一个 BUG,就要花很多时间来定位异常问题。

13460
来自专栏大数据成神之路

Flink从入门到放弃(入门篇2)-本地环境搭建&构建第一个Flink应用

本地机器上需要有 Java 8 和 maven 环境,推荐在linux或者mac上开发Flink应用:

22630
来自专栏大数据成神之路

7-Flink的分布式缓存

Flink提供了一个分布式缓存,类似于hadoop,可以使用户在并行函数中很方便的读取本地文件,并把它放在taskmanager节点中,防止task重复拉取。

16980
来自专栏JAVA高级架构

作为一名Java程序员的必修课

上面的知识结构图,是基于对目前java程序员会涉及到的内容以及目前招聘时候的技术要求,另外结合自身对java程序员的一些认知而写出来的

14320

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励