nexus目录介绍

blobs 创建blob的默认路径,当然也可以重新指定
cache 当前缓存的karaf包的信息
db OrientDB数据库的数据,用于存储nexus的元数据的数据库
elasticsearch 当前配置的Elasticsearch状态
etc 运行时配置状态和关于资源库的自定义的相关的东西
health-check 健康检查的相关报告的存储目录吧
keystores 自动生成的关于资源库的ID主键
log 运行实例生成的日志文件,也有日志文件的压缩包,貌似是每天都会生成日志文件,可以定期删除老的日志文件
tmp 用于存储临时文件的目录

具体每个目录下的各个配置文件的作用,可参考官方文档说明:https://help.sonatype.com/display/NXRM3/Installation

配置maven项目使用nexus私服

配置maven分发jar包到指定私服仓库

  1. 配置pom.xml distributionManagement节点,当执行deploy命令时,会将jar发布到指定地址
  • pom.xml
<project>
...
<!-- 定义releases库和snapshots库的nexus地址 -->
<!-- maven仓库分为两种release发布仓库(<repository>) 和snapshot快照仓库(<snapshotsrepository>),snapshot快照仓库用于保存开发过程中的不稳定版本,release正式仓库用来保存稳定的发行版本 -->
<distributionManagement>
    <!-- 如果是release正式发布版本,在mvn deploy时会自动发布到正式版本库中 -->
    <!-- 使用快照版本的模块,在不更改版本号的情况下直接编译打包时,maven会自动从镜像服务器上下载最新的快照版本 -->
    <repository>
        <id>nexus-releases</id>
        <name>Nexus Release Repository</name>
        <url>http://172.17.2.39:8086/repository/maven-releases/</url>
    </repository>
    <!-- 如果是snapshot快照版本,在mvn deploy时会自动发布到此快照版本库中 -->
    <!-- 使用正式版本的模块,在不更改版本号的情况下编译打包时,如果本地已经存在该版本的模块则使用本地的而不是主动去镜像服务器上下载 -->
    <snapshotRepository>
        <id>nexus-snapshots</id>
        <name>Nexus Snapshot Repository</name>
        <url>http://172.17.2.39:8086/repository/maven-snapshots/</url>
    </snapshotRepository>
</distributionManagement>
...
</project>

其中url中的http://172.17.2.39:8086/repository/maven-xxx/是在maven项目中通过copy直接拷贝出来

  1. 分发套件到远程仓库需要认证,如果没有配置任何认证信息,往往会得到401错误,这个时候,如下在settings.xml中配置认证信息
  • settings.xml
<settings>
    ...
    <servers>
        <server>
            <id>nexus-releases</id>
            <username>admin</username>
            <password>admin123</password>
        </server>
        <server>
            <id>nexus-snapshots</id>
            <username>admin</username>
            <password>admin123</password>
        </server>
    </servers>
    ...
</settings>

注意,settings.xml中server元素下id的值必须与pom.xml中repository或snapshotRepository下id的值完全一致,将认证信息放到settings下而非pom中,是因为pom往往是它人可见的,而settings.xml是本地的

设置nexus为镜像地址

  • setting.xml
<!-- 自定义maven本地仓库地址 -->
<localRepository>E:/Download/Maven</localRepository>
<!--nexus服务器-->
<servers>
    <server>
        <id>nexus</id>
        <username>admin</username>
        <password>admin123</password>
    </server>
</servers>
<!-- 仓库组的url地址  id和name自定义,mirrorOf的值设置为central,写死的 -->
<mirrors>
    <mirror>
        <id>nexus</id>
        <name>nexus repository</name>
        <url>http://172.17.2.39:8086/repository/maven-public/</url>
        <mirrorOf>central</mirrorOf>
    </mirror>
</mirrors>

参考:

常见问题

  • 进行代码deploy部署时提示Return code is: 400, ReasonPhrase: Repository does not allow updating assets: maven-releases

参考:https://blog.csdn.net/Alexshi5/article/details/81633948

解决:releases仓库的部署策略默认为禁止重部署,如果要重新部署到这个仓库中需要修改部署策略为Allow Redeploy