![](/img/trans.png)
[英]Accessing Private Maven Github Package Registry with Gradle
[英]How to access maven dependecy from GitHub Package Registry (Beta)
我將 maven 人工制品上傳到GitHub Package 注冊表(測試版)並希望將其添加為 Z402C5D9AF6B43714DZ07 依賴項。 我已經在Regestry-Beta中並為我的示例HalloMaven項目激活了它。 mvn deploy
也成功了,所以工件在這里是公開的: https://github.com/TobseF/HelloMaven/packages
但是如何將它包含為 maven 依賴項?
我試圖用這個pom.xml
將它添加到一個新的示例項目中:
<groupId>de.tfr.test</groupId>
<artifactId>maven-repo-test</artifactId>
<version>1.0-SNAPSHOT</version>
<repositories>
<repository>
<id>github</id>
<name>GitHub TobseF Apache Maven Packages</name>
<url>https://github.com/TobseF/HelloMaven/packages</url>
<!-- also tried:
<url>https://maven.pkg.github.com/HelloMaven/</url> -->
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>github.tobsef</groupId>
<artifactId>hello-maven</artifactId>
<version>1.2.1</version>
</dependency>
</dependencies>
但是無法解決依賴關系。 奇怪的是artifactId
是github.tobsef.hello-maven
,與 pom.xml 中指定的hello-maven
不匹配。 但我不知道為什么github.tobsef
會被前置以及存儲庫 url 是否正確。
The official GitHub Configuring Apache Maven for use with GitHub Package Registry only shows how to push it with credentials. 但我的倉庫是公開的,不需要身份驗證。
HalloMaven示例的設置:
settings.xml
<profiles>
<profile>
<id>github</id>
<repositories>
<repository>
<id>github</id>
<name>GitHub TobseF Apache Maven Packages</name>
<url>https://maven.pkg.github.com/TobseF</url>
</repository>
</repositories>
</profile>
</profiles>
<servers>
<server>
<id>github</id>
<username>${env.GITHUB_USERNAME}</username>
<password>${env.GITHUB_TOKEN}</password>
</server>
</servers>
pom.xml
<groupId>github.tobsef</groupId>
<artifactId>hello-maven</artifactId>
<version>1.2.1</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.1</version>
</plugin>
</plugins>
</build>
<properties>
<github.global.server>github</github.global.server>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>11</java.version>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<distributionManagement>
<repository>
<id>github</id>
<name>GitHub TobseF Apache Maven Packages</name>
<url>https://maven.pkg.github.com/TobseF/HelloMaven</url>
</repository>
</distributionManagement>
deploy.yml
name: Maven Deploy
on:
push:
branches:
- master
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 11
- name: Maven build
run: mvn --file pom.xml package
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 11
- name: Deploy to Github Package Registry
env:
GITHUB_USERNAME: ${{ secrets.GITHUB_USERNAME }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: mvn --settings settings.xml --file pom.xml deploy
結果是Could not find artifact github.tobsef:hello-maven:pom:1.2.1 in github (https://github.com/TobseF/HelloMaven/packages)
。
任何想法如何設置部署以部署正確的工件以及如何將其添加為依賴項?
好的✅,我發現了如何正確配置它。
您可以在此處查看帶有有效GitHub 操作CI 和GitHub Package 注冊表的示例項目:
你好馬文
要查看如何包含依賴項,請檢查:
GitHub-plugin-registry-example 模板
訣竅是在全局 maven settings.xml
中向 GitHub API 添加身份驗證。Z0F635D0E.C5D9AF6B43711EA070BEE5170F74DZ
<servers>
<server>
<id>github</id>
<username>YOUR_USERNAME</username>
<password>YOUR_AUTH_TOKEN</password>
</server>
</servers>
將YOUR_USERNAME
替換為您的 GitHub 登錄名。
將YOUR_AUTH_TOKEN
替換為生成的 GitHub 個人訪問令牌:
GitHub >設置>開發人員設置>個人訪問令牌>生成新令牌:
令牌至少需要read:packages
scope。 否則你會得到一個Not authorized
的異常。
尚不清楚此身份驗證是否也需要讀取 package。 特別是因為 jar 無需登錄 package 頁面即可獲得: https://github.com/TobseF/HelloMaven/packages
所以這有點討厭,因為我們必須添加<server><id>github</id>...
並希望其他人也將提供具有github
id 的repository
。 否則,我們必須為每個 github 依賴項添加一個服務器配置。
請記住,每個 GitHub 存儲庫都是其自己的 maven 存儲庫。 所以沒有像 maven 中央這樣的全局注冊表。 每個依賴項都必須提供自己的repository
鏈接聲明。
但結合 GitHub Actions CI,它是一個非常好的替代方案,無需任何第三方插件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.