我正在将IzPack-maven-plugin及其自身的“ izpack-jar”包装类型用于创建安装程序工件。该插件在本地将其创建为.jar
文件,但将其部署为izpack-jar
类型。因此,从链接获取工件时,它将获得.izpack-jar
扩展名。
在插件的code中包含以下几行:
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
绑定到生命周期,可以使用其他类型的部署,但是我不建议这样做。关于java - 为Maven部署指定显式类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22485790/