Прикрепите основной артефакт вручную, если он создан с помощью maven-assembly-plugin

У меня проблемы с созданием проекта Maven. У меня есть требование производитьдетерминистический JAR-файлы, которые должны быть двоично-согласованными в разных сборках и версиях, если между этими сборками нет изменений в исходном коде. Для этой цели я использовалЭта статья для руководства.

Мне удалось построить свои банки, и они соответствуют моим требованиям. Вот моя конфигурация:

  <plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.7</version>
    <executions>
      <execution>
        <id>step-1-remove-timestamp</id>
        <phase>prepare-package</phase>
        <configuration>
          <target>
            <touch datetime="01/01/2015 00:10:00 am">
              <fileset dir="target/classes"/>
              <fileset dir="src"/>
            </touch>
          </target>
        </configuration>
        <goals>
          <goal>run</goal>
        </goals>
      </execution>
      <execution>
        <id>step-3-rename-assembly</id>
        <phase>package</phase>
        <configuration>
          <target>
            <copy file="${project.build.directory}/${project.build.finalName}-deterministic.zip"
                  tofile="${project.build.directory}/${project.build.finalName}.jar"/>
          </target>
        </configuration>
        <goals>
          <goal>run</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

  <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.2.1</version>
    <configuration>
      <descriptors>
        <descriptor>src/main/assembly/zip.xml</descriptor>
      </descriptors>
    </configuration>
    <executions>
      <execution>
        <id>step-2-make-assembly</id>
        <phase>prepare-package</phase>
        <goals>
          <goal>single</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

В приведенном выше коде я создаю и упаковываю банку в виде zip, затем копирую zip поверх ожидаемого артефакта jar.
Проблема с вышесказанным заключается в том, что maven по-прежнему выполняетmaven-jar-pluginпоэтому собранная вручную банка заменяется одной изmaven-jar-plugin, Я не хочу использовать эту банку, так как она не соответствует моим требованиям.

Итак, я отключилmaven-jar-plugin выполнение, явно установив его для запуска для недопустимой фазы, как показано ниже: (увидел, что издругие посты здесь)

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.5</version>
    <executions>
      <execution>
        <id>default-jar</id>
        <phase>never</phase>
        <configuration>
          <finalName>unwanted</finalName>
          <classifier>unwanted</classifier>
        </configuration>
      </execution>
    </executions>
  </plugin>

Все, кажется, хорошо, пока я не обнаружил, что мой главный артефакт jar никогда не устанавливается в.m2 каталог. Чтобы исправить это, я также добавилmaven-helper-plugin так что я вручную присоединяю любые артефакты, которые я создаю из плагина ассемблера:

  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>1.9.1</version>
    <executions>
      <execution>
        <id>attach-instrumented-jar</id>
        <phase>verify</phase>
        <goals>
          <goal>attach-artifact</goal>
        </goals>
        <configuration>
          <artifacts>
            <artifact>
              <file>${project.build.directory}/${project.build.finalName}.jar</file>
              <type>jar</type>
            </artifact>
          </artifacts>
        </configuration>
      </execution>
    </executions>
  </plugin>

Это приводит к ошибке, которую я не могу решить:

[ОШИБКА] Не удалось выполнить цель org.codehaus.mojo: build-helper-maven-plugin: 1.9.1: attach-artifact (attach-Instrumented-jar) в проекте my-project: Выполнение attach-Instrumented-jar цели org .codehaus.mojo: build-helper-maven-plugin: 1.9.1: ошибка присоединения-артефакта: для артефакта {полное-имя-моего-проекта.jar}:У прикрепленного артефакта должен быть другой идентификатор, чем у соответствующего основного артефакта. -> [Помощь 1]

Есть ли способ преодолеть эту проблему? Я проверил решения и большинство рекомендую использовать классификаторы, но я хочу установить основной артефакт, как если быmaven-jar-plugin, Для другого программного обеспечения, которое мы разрабатываем, потребуется стандартная зависимость jar, и мы хотим избежать усложнения нашей установки, вводя классификаторы необоснованно.

Ответы на вопрос(1)

Ваш ответ на вопрос