<packaging> 在Maven POM文件中声明的必要性是什么?



我做了一个Maven项目,并宣布打包为战争。

<packaging>war</packaging>

但这返回了一个错误,

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:2.2-beta-5:single (make-assembly) on project WaterDealer: Execution make-assembly of goal org.apache.maven.plugins:maven-assembly-plugin:2.2-beta-5:single failed: For artifact {ArtifactName:ArtifactName:0.0.1-SNAPSHOT:war}: An attached artifact must have a different ID than its corresponding main artifact.

但当我删除包装声明时,一切都如预期一样。

发生这种情况有什么具体原因吗?为什么声明封装类型返回错误An attached artifasct must have a different ID than its corresponding main artifact.?它们是如何关联的?

我从这个链接浏览了POM参考Maven POM参考,但没有发现这些信息非常有用。

错误来自与封装没有直接关系的汇编插件。

包装定义了maven生成的工件的类型(通常:一个pom.xml一个工件-这个规则也有例外,e.x.sources-jar或javadocs)。

默认值为"jar"。因此,如果您不指定任何内容,maven将创建一个jar文件。

包装的其他可用价值应该有点自我解释?

错误可能只是产生的名称。因此,打包jar将创建一个jar文件,"war"将创建war文件,依此类推

包装定义了一些已完成的绑定。这意味着,如果您决定使用packaging war,则意味着在包阶段运行maven-war插件。这可以在适当的文档中阅读。

问题是为什么你在war模块中使用maven汇编插件,除此之外,为什么要使用这样一个旧版本。看看这个网站,它显示了插件的最新版本:

http://maven.apache.org/plugins/

最新更新