私有Maven仓库安装和使用
阅读原文时间:2023年07月09日阅读:3

安装

这里选择安装的是windows平台,linux安装类似,下载可能要梯子

官网下载页

https://help.sonatype.com/repomanager2/download

下载链接

https://download.sonatype.com/nexus/oss/nexus-latest-bundle.zip

这里下载2.X的最新版本 捆绑包,内置jetty容器,可作为独立服务运行,jdk 要求1.8

(个人觉得 2.x版本更好用)

下载解压后,可以看到两个目录

安装: (这里以本机安装作为示例)

管理员身份进入解压后的bin目录下,执行 nexus 命令可以看到 提示命令

执行 nexus install ,等待安装完成

执行 nexus start 启动 nexus

访问  http://127.0.0.1:8081/nexus ,看到该页面即表示正常启动

基础使用

右上角点击登录 admin/admin123 (初始默认账号密码)

(名字自定义),作为稳定版和快照版私有仓库

两个仓库type都是 hosted 类型

my-maven-release

创建 my-maven-snapshot ,把 Repository Policy 改为Snapshot

至此,仓库已经创建完毕

nexus中所有仓库的实际位置都存储在

nexus-2.14.19-01-bundle\sonatype-work\nexus\storage 目录下

打开一个maven项目

在pom.xml添加以下内容

<repository>

    <id>my-maven-releases</id>

    <url>http://127.0.0.1:8081/nexus/content/repositories/my-maven-releases</url>

</repository>

<snapshotRepository>

    <id>my-maven-snapshot</id>

    <url>http://127.0.0.1:8081/nexus/content/repositories/my-maven-snapshot</url>

</snapshotRepository>

内容来源于刚才创建的仓库

maven的setting.xml中配置 server,因为访问仓库需要账号密码

<id>my-maven-releases</id>  

<username>admin</username>  

<password>admin123</password>  

<id>my-maven-snapshot</id>  

<username>admin</username>  

<password>admin123</password>  

maven项目下执行 mvn deploy

或者使用IDE 的maven插件执行clean deploy

deploy成功之后可以看到nexus远程仓库有了相关的jar包信息,本地maven仓库 org.example 文件夹下也会出现相关jar包

配置完成后,选择文件,点击 Add Artifact , 最后点击上传

或者点击 User ,选中右键

打开 conf 文件夹下的 nexus.properties 文件

配置公共库

将右边配置的仓库移动到左边并保存 ,就可以在公共库下看到之前deploy的项目的相关信息

这边也可以添加aliyun代理仓库并把它移动到公共库下,

这样个人的setting.xml 阿里云 镜像配置都可以省略了

但是如果不是公司网络,就会下不了依赖,个人可去可不去

setting.xml配置

servers部分  (这边如果不需要上传项目到私有仓库,可以不需要配置)

</servers>  
            <server>  
        <id>my-maven-releases</id>  
        <username>admin</username>  
        <password>admin123</password>  
    </server>  
    <server>  
        <id>my-maven-snapshot</id>  
        <username>admin</username>  
        <password>admin123</password>  
    </server>  
</servers>

Mirrors部分 用aliyun的maven仓库,可以不用变

私有仓库配置部分


my-maven public public Repository http://127.0.0.1:8081/nexus/content/groups/public/ true true public Public Repositories http://127.0.0.1:8081/nexus/content/groups/public/

 

记得激活配置

<activeProfiles>  
    <activeProfile>my-maven</activeProfile>  
</activeProfiles>

完整的配置如下:


http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">


D:\Program Files\Apache Software Foundation\repository





    <!-- Another sample, using keys to authenticate.  
    <server>  
      <id>siteServer</id>  
      <privateKey>/path/to/private/key</privateKey>  
      <passphrase>optional; leave empty if not used.</passphrase>  
    </server>  
    -->  
    <server>  
        <id>my-maven-releases</id>  
        <username>admin</username>  
        <password>admin123</password>  
    </server>  
    <server>  
        <id>my-maven-snapshot</id>  
        <username>admin</username>  
        <password>admin123</password>  
    </server>  
</servers>



<mirror>  
    <id>alimaven</id>  
    <name>aliyun maven</name>  
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>  
    <mirrorOf>central</mirrorOf>  
</mirror>


<!-- profile  
 | Specifies a set of introductions to the build process, to be activated using one or more of the  
 | mechanisms described above. For inheritance purposes, and to activate profiles via <activatedProfiles/>  
 | or the command line, profiles have to have an ID that is unique.  
 |  
 | An encouraged best practice for profile identification is to use a consistent naming convention  
 | for profiles, such as 'env-dev', 'env-test', 'env-production', 'user-jdcasey', 'user-brett', etc.  
 | This will make it more intuitive to understand what the set of introduced profiles is attempting  
 | to accomplish, particularly when you only have a list of profile id's for debug.  
 |  
 | This profile example uses the JDK version to trigger activation, and provides a JDK-specific repo.  
<profile>  
  <id>jdk-1.4</id>

  <activation>  
    <jdk>1.4</jdk>  
  </activation>

  <repositories>  
    <repository>  
      <id>jdk14</id>  
      <name>Repository for JDK 1.4 builds</name>  
      <url>http://www.myhost.com/maven/jdk14</url>  
      <layout>default</layout>  
      <snapshotPolicy>always</snapshotPolicy>  
    </repository>  
  </repositories>  
</profile>  
-->

<!--  
 | Here is another profile, activated by the system property 'target-env' with a value of 'dev',  
 | which provides a specific path to the Tomcat instance. To use this, your plugin configuration  
 | might hypothetically look like:  
 |  
 | ...  
 | <plugin>  
 |   <groupId>org.myco.myplugins</groupId>  
 |   <artifactId>myplugin</artifactId>  
 |  
 |   <configuration>  
 |     <tomcatLocation>${tomcatPath}</tomcatLocation>  
 |   </configuration>  
 | </plugin>  
 | ...  
 |  
 | NOTE: If you just wanted to inject this configuration whenever someone set 'target-env' to  
 |       anything, you could just leave off the <value/> inside the activation-property.  
 |  
<profile>  
  <id>env-dev</id>

  <activation>  
    <property>  
      <name>target-env</name>  
      <value>dev</value>  
    </property>  
  </activation>

  <properties>  
    <tomcatPath>/path/to/tomcat/instance</tomcatPath>  
  </properties>  
</profile>  
-->  
<profile>  
    <id>my-maven</id>  
    <repositories>  
        <repository>  
            <id>public</id>  
            <name>public Repository</name>  
            <url>http://127.0.0.1:8081/nexus/content/groups/public/</url>  
            <releases>  
                <enabled>true</enabled>  
            </releases>  
            <snapshots>  
                <enabled>true</enabled>  
            </snapshots>  
        </repository>  
    </repositories>  
    <pluginRepositories>  
        <pluginRepository>  
            <id>public</id>  
            <name>Public Repositories</name>  
            <url>http://127.0.0.1:8081/nexus/content/groups/public/</url>  
        </pluginRepository>  
    </pluginRepositories>  
</profile>


my-maven