我想在我的build.sbt依賴項中添加一個 scala 庫。這是示例包,它發布在 Github 注冊表中。這個庫不是來自官方的 maven 倉庫,我在Maven 倉庫中找不到它。我認為它無法安裝在那里。
<dependency>
<groupId>gjuoun</groupId>
<artifactId>hellopackage_2.13</artifactId>
<version>0.1.6</version>
</dependency>
然后,我發現它應該屬于ghcr.io,所以我將這一行添加到我的build.sbt.
resolvers = "hellopackage" at "http://ghcr.io/gjuoun/hellopackage"
它根本不起作用。我無法使用它。我正在尋找一個更好的方法來安裝這個包,方法是resolvers不使用addSbtPlugin. pom.xml(如果可能我不想使用)
謝謝你的幫助。
uj5u.com熱心網友回復:
- 您可以使用 Daniel Spiewak 的 sbt 插件sbt-github-packages。
請參閱http4s-request-signer_2.13 中的詳細資訊依賴項未從中央存盤庫下載
- 如果你不想使用 sbt 插件并且你只對構建你的專案感興趣而不是發布它(到 Github 注冊表)那么你可以添加到
build.sbt
// specifying repo is optional: "_"
resolvers = "Another maven repo" at "https://maven.pkg.github.com/gjuoun/_"
credentials = Credentials(
"GitHub Package Registry",
"maven.pkg.github.com",
"_", // user is ignored
"ghp_YOUR_GITHUB_TOKEN"
)
libraryDependencies = "gjuoun" %% "hellopackage" % "0.1.6"
這基本上就是插件的作用。
出于安全原因,最好不要對令牌進行硬編碼,build.sbt而是將其放入環境變數中
credentials = Credentials(
"GitHub Package Registry",
"maven.pkg.github.com",
"_",
sys.env("GITHUB_TOKEN")
)
您可以檢查沒有credentialssbt 將無法構建您的專案。
問題是,盡管您可以在瀏覽器中手動從 Github 下載 JAR 而無需身份驗證(并將其放入lib),但這并不意味著 Github 允許通過 API(sbt、ivy、coursier)以編程方式讀取、決議、下載而無需身份驗證.
您僅在第一次需要身份驗證。然后 JAR 將在本地快取~/.cache/coursier/v1/https/maven.pkg.github.com/gjuoun/_/gjuoun/hellopackage_2.13/0.1.6/并從那里進一步獲取。
幾個參考:
一個有效的 Github 令牌不應該總是強制性的 #28
GitHub 甚至需要令牌才能對包進行只讀訪問。
憑據應保持可選 #34
所以我遇到的問題是 GitHub Packages 的決議也需要令牌。您不能只下載未經身份驗證的包,這意味著無論您是否發布,憑據始終是必需的。老實說,這是 GitHub 需要解決的問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/535447.html
