在雲效中使用自己搭建的私有Maven倉庫

雲效提供了企業級Maven私有倉庫服務,用戶可以使用它來託管自己的私有二方庫。用戶也可以自己搭建Maven私服。以下是使用Nexus搭建Maven私服的指南。

本文中使用的是Nexus Repository Manager OSS nexus 3.5.0-02。下載鏈接爲 https://www.sonatype.com/download-oss-sonatype。安裝和使用請參考其官方文檔

假設您的Nexus服務器的域名(或者您傾向於直接使用IP也可以)是www.your-repo.com

保證私服公網可見

首先要保證您的私服在公網是可見的,這樣雲效才能從您的私服下載二方包。驗證方式:在一臺您的企業內網之外的機器上執行telnet www.your-repo.com 80,如果沒有返回錯誤,則表示該私服是公網可見的。

保證私服中的庫不能被匿名下載

Nexus默認的配置,允許匿名下載maven庫中的包。需要將其禁止掉。具體做法如下。

開啓下載包的HTTP認證

nexus-default.properties添加一行nexus.browserdetector.disable=true。重啓nexus。

關閉匿名用戶

保證下圖中Allow anonymous users to access the server是沒有選中的。關閉匿名

創建用戶上傳和下載二方包的maven庫

在Nexus上創建了一個名爲my-lib-repo的maven庫。庫

爲maven庫創建用戶

Nexus會爲您創建的maven庫預置一些權限點,接下來需要創建一個角色,來包含只讀的權限點。role

然後再創建一個用戶來使用該角色。用戶名和密碼都是my-lib-repo-readeruser

在settings.xml中添加認證信息

在Maven的的默認settings.xml中找到servers的部分,添加一個server配置如下。

    <server>
      <id>my-lib-repo</id>
      <username>my-lib-repo-reader</username>
      <password>my-lib-repo-reader</password>
    </server>

爲了保證雲效使用該settings.xml,需要把該settings.xml文件放置到您的代碼庫的根目錄。

配置pom.xml的下載包順序

爲了讓您的Maven構建先嚐試從maven.aliyun.com下載包,如果下載不到再從http://www.your-repo.com/repository/my-lib-repo下載包,需要按照如下的方式配置pom.xml

<project>
...
    <repositories>
        <repository>
              <id>aliyun-repo</id>
            <url>http://maven.aliyun.com/nexus/content/groups/public</url>
        </repository>
        <repository>
            <id>my-lib-repo</id>
            <url>http://www.your-repo.com/repository/my-lib-repo/</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
          <id>central</id>
          <url>http://maven.aliyun.com/nexus/content/groups/public</url>
        </pluginRepository>
        <pluginRepository>
          <id>my-lib-repo</id>
          <url>http://www.your-repo.com/repository/my-lib-repo/</url>
        </pluginRepository>
    </pluginRepositories>
...
</project>

您的maven構建無論下載依賴包還是插件包,都會首先嚐試從maven.aliyun.com下載,如果下載不到,再從http://www.your-repo.com/repository/my-lib-repo/下載。

發佈二方包

如果您需要發佈二方包,需要給角色my-lib-repo-read添加相應的權限。permissino

同時要在自己的pom.xml中添加配置如下:

    <distributionManagement>
       <repository>
          <id>my-lib-repo</id>
          <url>http://www.your-repo.com/repository/my-lib-repo/</url>
       </repository>
    </distributionManagement>

然後就可以在構建配置build.command中使用mvn deploy命令上傳二方包了。

樣例文件如下:

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>xxx.xxx.xxx</groupId>
<artifactId>your-project</artifactId>
<version>xxx</version>
<!-- 倉庫下載配置 -->
<repositories>
  <repository>
    <id>aliyun-repo</id>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
  </repository>
  <repository>
    <id>my-lib-repo</id>
    <url>http://www.your-repo.com/repository/my-lib-repo/</url>
  </repository>
</repositories>
<pluginRepositories>
  <pluginRepository>
    <id>central</id>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
  </pluginRepository>
  <pluginRepository>
    <id>my-lib-repo</id>
    <url>http://www.your-repo.com/repository/my-lib-repo/</url>
  </pluginRepository>
</pluginRepositories>
<!--  需要發佈二方包 則打開下列的配置
    <distributionManagement>
        <repository>
            <id>my-lib-repo</id>
            <url>http://www.your-repo.com/repository/my-lib-repo/</url>
        </repository>
    </distributionManagement>
     -->
</project>

settings.xml

<settings>
  <mirrors>
    <mirror>
      <id>aliyun-repo</id>
      <mirrorOf>central</mirrorOf>
      <name>central mirror</name>
      <url>http://maven.aliyun.com/mvn/repository</url>
    </mirror>

    <mirror>
      <id>my-lib-repo</id>
      <mirrorOf>my-lib-repo</mirrorOf>
      <name>private mirror</name>
      <url>http:/www.your-repo.com/repository/my-lib-repo/</url>
    </mirror>
  </mirrors>

  <servers>
    <server>
      <id>my-lib-repo</id>
      <username>my-lib-repo-reader</username>
      <password>my-lib-repo-reader</password>
    </server>
  </servers>
</settings>

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章