Как создать пропатченную банку с maven (с той же группой: artifact: версия, но другой классификатор)? - PullRequest
0 голосов
/ 08 марта 2020

У меня есть несколько причин для исправления существующего jar (причины не имеют значения). Я пытаюсь создать jar с тем же group:artifactid:version, но с другим классификатором. Моя попытка pom.xml ниже.

Maven расстроен из-за двух вещей: 1) он не распознает <classifier> в проекте (строка с комментарием) и 2) считает ссылку нижней как круговой (поскольку часть классификатора игнорируется, так что это вторичная ошибка).

Как правильно исправить эту ситуацию?

(я удалил плагины, но в основном они есть копирование зависимостей и выполнение c сценария оболочки - простой, но громоздкий и неактуальный.)

<?xml version="1.0" encoding="UTF-8"?>
<project ...>
  <modelVersion>4.0.0</modelVersion>

  <name>Patched TestNG</name>

  <groupId>org.testng</groupId>
  <artifactId>testng</artifactId>
  <version>6.13.1</version>
  <classifier>patched</classifier> <!-- this is the first offending line -->
  <packaging>jar</packaging>

  <build>...</build>
  <dependencies>
    <dependency> <!-- treated as a self-reference -->
      <groupId>org.testng</groupId>
      <artifactId>testng</artifactId>
      <version>6.13.1</version>
    </dependency>
  </dependencies>
</project>

Ошибки:

[ОШИБКА] Проект org.testng: testng: 6.13.1 (... / testng-patched / pom. xml) содержит 2 ошибки [ОШИБКА] Неверно сформированный POM ... / testng-patched / pom. xml: Нераспознанный тег: 'классификатор' (позиция: START_TAG seen ... \ n ... @ 12: 15) @ ... / testng-patched / pom. xml, строка 12, столбец 15 -> [Help 2] [ERROR]
'dependencies.dependency org.testng: testng: 6.13.1 'для org.testng: testng: 6.13.1 ссылается на себя. @ строка 71, столбец 17

1 Ответ

0 голосов
/ 08 марта 2020

Вы просите правильный способ справиться с ситуацией. По моему скромному мнению: не пытайтесь самостоятельно ссылаться на jar, но go на исходный код, внесите необходимые изменения и постройте артефакт с номером версии 6.13.1-patched.

* 1003. * Если вы действительно хотите добавить банку с тем же GAV, но с другим классификатором, вам нужно обойти Maven (что само по себе обычно является грехом). Моя лучшая идея была бы:
  1. Удалить <classifier>. Этот тег не существует.
  2. Переименуйте <artifactId> во что-то другое, например dummy.
  3. Создайте артефакт с помощью clean package.
  4. Теперь используйте deploy:deploy-file с соответствующими параметрами для развертывания артефакта dummy с нужным GAV и классификатором в хранилище.

Последний пункт сложен и может не сработать. Обратите внимание, что вы пытаетесь развернуть артефакт без POM (поскольку POM исходного артефакта уже существует), и это может работать, а может и не работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...