Об использовании JitPack имени git-репозитория в качестве Maven artifactId

Эта следующая часть серии «Советы и рекомендации по JitPack» снова посвящена JitPack, но она будет намного короче, чем предыдущие две. Помимо прочего, в предыдущих двух постах этой серии мы видели, что JitPack — это другой тип Maven-репозитория, поскольку он собирает ваши артефакты на серверах JitPack по требованию при первом импорте определенной версии в свой проект, и делает это на основе исходного кода из репозитория GitHub (или Bitbucket, или другого git-хоста). Хотя вы можете настроить обычный обратный домен как groupId, как показано в моем предыдущем посте, где также объяснялось, как заставить JitPack собирать заранее, по умолчанию JitPack определяет groupId на основе git-хоста и пользователя на этом git-хосте (например, com.github.USER). Затем JitPack использует имя git-репозитория в качестве artifactId, независимо от того, что указано в вашем pom.xml (он переименовывает любые jar-файлы, создаваемые сборкой).

Оглавление:

  • Почему это ограничение.
  • Советы по работе с этим ограничением.
  • Проект, использованный в примерах.
  • Где вы можете меня найти.

Почему это ограничение

JitPack использует имя git-репозитория в качестве artifactId. Разве вы только что не сказали это? Да. Я повторил это, потому что вижу в этом потенциальное ограничение, в основном для таких как я, у которых уже есть библиотеки с артефактами, опубликованными в других местах (например, я публикую все свои библиотеки на Maven Central), но я начал использовать JitPack также из-за его способности создавать снимки из определенных коммитов, веток, pull-requests и т.д. Подробнее об этом читайте в первом посте серии, включая настройку JitPack для последних версий JDK.

Так почему же это ограничение? Ну, для некоторых моих библиотек artifactId, который я уже использую для других репозиториев, таких как Maven Central, идентичен имени репозитория GitHub. В других случаях разница заключается только в корпусе. Имя artifactId традиционно пишется со строчной буквы (я придерживаюсь этого правила), но соответствующее имя репозитория GitHub для некоторых моих библиотек пишется в смешанном регистре. В этом нет ничего страшного, поскольку регистр не имеет значения при ссылке на имя репозитория GitHub. Это просто визуальный элемент при просмотре GitHub.

Однако проблема возникает в паре других случаев, когда у меня есть существующая библиотека с множеством релизов артефактов, опубликованных с artifactId в Maven Central, который отличается от имени репозитория GitHub. Переименование репозитория GitHub приведет к нарушению существующих ссылок на него. Переключение на другой artifactId в Maven Central для соответствия имени репозитория привело бы к путанице, так как старые версии имели бы один artifactId, а новые версии — другой.

Из-за этого ограничения у меня есть несколько библиотек, которые я еще не настроил для сборок JitPack. Одна из них — JavaPermutationTools, с именем репозитория GitHub JavaPermutationTools, но Maven artifactId jpt. На самом деле, эта конкретная библиотека также использует Java Platform Module System (JPMS), и предоставляет модуль JPMS с именем org.cicirello.jpt, который случайно совпадает с комбинацией моего обратного домена groupId и artifactId, хотя на самом деле это не требуется. Я настроил свой обратный домен для использования на JitPack, поэтому groupId будет согласован во всех репозиториях Maven, где я сделаю свою библиотеку доступной. Но наличие artifactId, который отличается, беспокоит меня. Если бы я настроил сборки JitPack (в данном случае это необходимо, так как для этой библиотеки требуется JDK 17, а JitPack по умолчанию собирает JDK 8), то импорт выглядел бы по-разному, если бы выполнялся из Maven Central и JitPack.

Зависимость от Maven:
Импорт из Maven Central в настоящее время включает указание зависимости с:

<dependency>
  <groupId>org.cicirello</groupId>
  <artifactId>jpt</artifactId>
  <version>4.1.0</version>
</dependency>
Войти в полноэкранный режим Выйти из полноэкранного режима

Гипотетический импорт из JitPack:
Но из JitPack это будет обязательно (так как я не буду переименовывать репозиторий):

<dependency>
  <groupId>org.cicirello</groupId>
  <artifactId>JavaPermutationTools</artifactId>
  <version>4.1.0</version>
</dependency>
Войти в полноэкранный режим Выйти из полноэкранного режима

Здесь слишком высок потенциал для путаницы, поскольку определения зависимостей кажутся разными артефактами, хотя на самом деле они содержат один и тот же модуль Java и один и тот же набор пакетов Java.

Совет

Если вы только начинаете работу над библиотекой Java (или Kotlin, или другого языка JVM), и если есть вероятность, что вы захотите выпускать артефакты в несколько репозиториев Maven, включая JitPack, то назовите свой git-репозиторий так же, как вы планируете назвать свой artifactId. На самом деле, даже если вы не планируете намеренно поддерживать JitPack, поскольку из JitPack можно импортировать артефакты, созданные по требованию, независимо от того, намерены ли мейнтейнеры библиотеки (например, вы) это делать или нет (при условии, что сборка по умолчанию JitPack работает для вашей библиотеки), то в любом случае будет хорошей идеей согласовать имя вашего репозитория с выбранным вами artifactId.

Проект, используемый в примерах

Примеры основаны на JavaPermutationTools, которая представляет собой библиотеку Java, ориентированную на все виды вычислений, связанных с перестановками и последовательностями. Она включает, среди прочего, обширную коллекцию метрик расстояния для вычисления расстояния между двумя перестановками, а также метрики расстояния между строками для вычисления расстояния между парами строк или другими последовательными структурами, такими как массивы. Возможно, я напишу будущие посты DEV об этой библиотеке. Проверьте JPT, если у вас есть такая возможность.

У JPT есть веб-сайт:

JavaPermutationTools — библиотека Java для вычислений на перестановках и последовательностях

Библиотека JavaPermutationTools (JPT) включает в себя различные метрики расстояний перестановок, а также метрики расстояний для последовательностей (т.е. строк, массивов и других упорядоченных типов данных).

jpt.cicirello.org

А вот его репозиторий на GitHub:

cicirello / JavaPermutationTools

Библиотека Java для вычислений на перестановках и последовательностях

JavaPermutationTools (JPT): Java-библиотека для вычислений перестановок и последовательностей

Copyright (C) 2018-2022 Vincent A. Cicirello.

Веб-сайт: https://jpt.cicirello.org/

Документация по API: https://jpt.cicirello.org/api

Публикации о библиотеке
Пакеты и релизы
Статус сборки
Покрытие тестов JaCoCo
Безопасность
DOI
Лицензия
Поддержка

Как цитировать

Если вы используете эту библиотеку в своих исследованиях, пожалуйста, ссылайтесь на следующую работу:

Cicirello, Vincent A (2018). JavaPermutationTools: Java-библиотека метрик расстояния перестановки. Journal of Open Source Software, 3(31), 950. https://doi.org/10.21105/joss.00950 .

Обзор

Библиотека JavaPermutationTools (JPT) предоставляет Java-классы и интерфейсы, позволяющие представлять и генерировать перестановки и последовательности, а также выполнять вычисления над перестановками и последовательностями. Она включает в себя реализацию различных метрик расстояний перестановок, а также метрик расстояний для последовательностей (т.е. массивов строк и других упорядоченных типов данных).

Java 17+

В настоящее время мы поддерживаем Java 17+. См. следующую таблицу для соответствия между версией библиотеки и минимально поддерживаемым Java…

Посмотреть на GitHub

Где вы можете меня найти

В Интернете:

Винсент А. Чичирелло — профессор компьютерных наук

Винсент А. Чичирелло — профессор компьютерных наук в Стоктонском университете — исследователь в области искусственного интеллекта, эволюционных вычислений, роевого интеллекта и вычислительного интеллекта, доктор философии по робототехнике в Университете Карнеги-Меллон. Он является старшим членом ACM, старшим членом IEEE, пожизненным членом AAAI, заслуженным членом EAI и членом SIAM.

cicirello.org

Следите за мной на DEV:

Винсент А. Чичирелло

Исследователь и преподаватель в области А.И., алгоритмов, эволюционных вычислений, машинного обучения и роевого интеллекта.

Следите за мной на GitHub:

cicirello / cicirello

Мой профиль на GitHub

Vincent A Cicirello

Сайты, где вы можете найти меня или мои работы
Веб и социальные сети
Разработка программного обеспечения
Публикации

Если вы хотите сгенерировать эквивалент вышеуказанного для своего профиля на GitHub, ознакомьтесь с действием cicirello/user-statisticianGitHub.

Посмотреть на GitHub

Оцените статью
devanswers.ru
Добавить комментарий