Как добавить реестр Github maven в build.sbt

Я хочу добавить библиотеку scala в свои build.sbt зависимости. Вот пример пакета, и он публикуется в реестре 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, если это возможно)

Спасибо за любую помощь.

stackoverflow.com/questions/74126937/…
Dmytro Mitin 15.11.2022 04:55

Не могли бы вы быть более конкретным, когда вы говорите «это не работает»? Что такое журналы SBT? Вы видите попытку получить артефакт с ghcr.io? Какой-нибудь код/сообщение об ошибке?

Gaël J 15.11.2022 07:11

@GaëlJ Ошибка в том, что проект не может найти библиотеку. Похоже, я не правильно добавил зависимость. http://ghcr.io/gjuoun/hellopackage неправильно, но я не знаю, как добавить эту библиотеку в качестве моей зависимости в build.sbt .

JoeYo 15.11.2022 08:00

@DmytroMitin Спасибо. поэтому, если я хочу установить библиотеку локально, мне приходится постоянно использовать PAT. Это правильно?

JoeYo 15.11.2022 08:01

@JoeYo Да, вы должны использовать токен (см. ответ по ссылке). Либо тот, который вы обычно используете, либо вы можете создать отдельный с необходимыми минимальными правами для этой задачи. После первой успешной сборки jar библиотеки будет кэшироваться локально, sbt будет использовать ее в первую очередь вместо реестра github, пока что-то не произойдет с кешем.

Dmytro Mitin 15.11.2022 09:36

@JoeYo Вы тоже всегда можете поставить баночку lib.

Dmytro Mitin 15.11.2022 09:42

@JoeYo Почему ты не хочешь использовать плагин sbt?

Dmytro Mitin 15.11.2022 14:42

@JoeYo может быть полезно для будущих читателей, если вы скопируете и вставите в свое сообщение полный журнал ошибок, который SBT дает вам

Gaël J 15.11.2022 19:05

@DmytroMitin Большое спасибо за вашу помощь, я наконец решил использовать плагин, я тратил время на поиск установочных пакетов, не проходя PAT. Во всяком случае, это решение работает для меня.

JoeYo 16.11.2022 00:05
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
9
125
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
  • Вы можете использовать плагин sbt от Daniel Spiewak 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")
)

Вы можете убедиться, что без credentials sbt не сможет собрать ваш проект.

Дело в том, что хотя вручную вы можете скачать JAR с Github в браузере без авторизации (и поместить в 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 также требует токена. Вы не можете просто загрузить пакет без проверки подлинности, а это означает, что учетные данные необходимы всегда, независимо от того, публикуете ли вы или нет. Честно говоря, это то, что GitHub нужно исправить.

Другие вопросы по теме