Указание явного типа для развертывания Maven

1

Я использую модуль IzPack-maven с собственным типом упаковки "izpack-jar" для создания артефакта установщика. Плагин создает этот артефакт локально как .jar файл, но развертывает его как тип izpack-jar. Поэтому он получает расширение .izpack-jar при извлечении этого артефакта из нексуса.

В коде плагина содержатся следующие строки:

project.getArtifact().setFile(jarFile);
[...]
file = new File(outputDirectory, finalName + localClassifier + ".jar");

Второй создает файл явно как .jar файл, а первый просто устанавливает этот файл в качестве основного артефакта.

Возможно ли вообще построить артефакт с одним типом упаковки, но развернуть его другим типом?

Теги:
maven
deployment
nexus
izpack

1 ответ

0

На самом деле расширение для типа izpack-jar определяется как jar, поэтому его следует развернуть как jar файл (в то время как тип упаковки - izpack.jar).

Обновить:

см. исходный код (https://github.com/izpack/izpack/blob/master/izpack-maven-plugin/src/main/resources/META-INF/plexus/components.xml):

<component>
  <role>org.apache.maven.artifact.handler.ArtifactHandler</role>
  <role-hint>izpack</role-hint>
  <implementation>org.apache.maven.artifact.handler.DefaultArtifactHandler</implementation>
  <configuration>
    <type>izpack</type>
    <includesDependencies>false</includesDependencies>
    <language>java</language>
    <extension>jar</extension>
    <addedToClasspath>true</addedToClasspath>
    <packaging>izpack-jar</packaging>
  </configuration>
</component>

Упаковка и расширение могут быть разными (например, в случае пучков или maven-плагинов).

Вы можете развернуть другой тип, явно маскируя выполнение по default-deploy (привязывая его к фазе жизненного цикла несуществующего) и привязывая deploy:deploy-file к вашему жизненному циклу, однако я бы не рекомендовал его.

  • 0
    Где расширение определяется как jar? (Я вижу только локальный файл, определенный как .jar) Nexus определенно перечисляет развернутый артефакт как <type> izpack-jar </ type>, а зависимость: copy также создает файл .izpack-jar.
  • 0
    Я обновлю свой ответ. Вы можете загрузить артефакт, используя расширение или тип, т.е. если вы объявите свою зависимость как тип jar, он все равно будет работать (загляните в репозиторий nexus с помощью браузера, он должен показать файл jar, а не jar izpack)
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню