Nexus和Maven

324 阅读2分钟

nexus通常是用来存储jar包的私服,配合maven可以推送和拉取jar包

先安装nexus,这里采用docker compose方式

docker-compose.yml

version: '3'
services:
  nexus:
    restart: always
    image: sonatype/nexus3
    container_name: nexus
    ports:
      - 8081:8081
    volumes:
      - ./data:/nexus-data # 这个data目录需要777权限
    environment: # 更多环境参数可在docker hub上搜索sonatype/nexus3查看
      INSTALL4J_ADD_VM_PARAMS: "-Dstorage.diskCache.diskFreeSpaceLimit=2048" # 指定磁盘剩余空间检测的大小为2G,磁盘剩余空间小于此值时会报错

通过docker-compose up -d命名启动,docker psdocker-compose ps查看启动状态,docker-compose logs -f查看启动日志

启动成功后,打开ip:8081,点击右上角Sign in,默认用户名是admin,密码在data目录下admin.password文件中

创建仓库

点击Repositories打开,再点击Create repository,选择Maven2 (hosted),分别创建ReleaseSnapshot两个仓库,Deployment policy选择Allow redeploy

创建仓库组

再次点击Create repository,这次选择Maven2 (group),在Member repositories中添加刚才创建的两个仓库

创建角色

左侧菜单点击Roles,需要创建两个角色,分别是可以发布jar包的角色和只可以浏览jar包的角色

  • 只可以浏览的角色权限选择
    • nx-repository-view-maven2-xxx-browse
    • nx-repository-view-maven2-xxx-read

其中xxx是上面创建的仓库组名

  • 可发布jar的角色权限选择
    • nx-repository-view-maven2-xxx-*
    • nx-repository-view-maven2-yyy-*
    • nx-repository-view-maven2-zzz-*

其中xxx是仓库组名,yyy和zzz是release和snapshot仓库名

创建用户

创建用户,选择相应的角色就可以了

Maven配置

settings.xmlservers节点添加server子节点,如下:

<server>
	  <id>snapshot</id>
	  <username>xxx</username>
	  <password>xxx</password>
</server>
<server>
	  <id>releases</id>
	  <username>xxx</username>
	  <password>xxx</password>
</server>
<server>
	  <id>public</id>
	  <username>xxx</username>
	  <password>xxx</password>
</server>

发布配置

在项目pom.xml中添加

<distributionManagement>
    <repository>
        <id>releases</id><!-- 和settings.xml中的id一致 -->
        <url>http://xxx:8081/repository/release仓库名/</url>
    </repository>
    <snapshotRepository>
        <id>snapshot</id>
        <url>http://xxx:8081/repository/snapshot仓库名/</url>
    </snapshotRepository>
</distributionManagement>

在maven面板中双击deploy就会将编译好的jar传到nexus仓库中了

拉取配置

在项目pom.xml中添加

<repositories>
    <repository>
        <id>public</id>
        <url>http://xxx:8081/repository/仓库组名/</url>
    </repository>
</repositories>

到这里就可以从nexus上拉取jar包了

关注公众号:飞翔的代码