Я использую модуль IzPack-maven с собственным типом упаковки "izpack-jar" для создания артефакта установщика. Плагин создает этот артефакт локально как .jar
файл, но развертывает его как тип izpack-jar
. Поэтому он получает расширение .izpack-jar
при извлечении этого артефакта из нексуса.
В коде плагина содержатся следующие строки:
project.getArtifact().setFile(jarFile);
[...]
file = new File(outputDirectory, finalName + localClassifier + ".jar");
Второй создает файл явно как .jar
файл, а первый просто устанавливает этот файл в качестве основного артефакта.
Возможно ли вообще построить артефакт с одним типом упаковки, но развернуть его другим типом?
На самом деле расширение для типа 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
к вашему жизненному циклу, однако я бы не рекомендовал его.