【问题标题】:What does maven do with a bogus packaging type?maven 对伪造的包装类型做了什么?
【发布时间】:2011-11-09 06:43:51
【问题描述】:

我正在学习一个有点复杂的 Maven 构建。我发现了一个使用虚假包装类型的模块,具体来说是“custom-war”。如果我执行:

mvn -e -X clean install

maven 这样抱怨:

[DEBUG] Error looking up lifecycle mapping to retrieve optional mojos. Lifecycle 
  ID: clean. Error: Component descriptor cannot be found in the component repository:
  org.apache.maven.lifecycle.mapping.LifecycleMappingcustom-war.

但是,它似乎会继续执行 clean:clean,因此它一定已经决定将哪些目标映射到生命周期阶段。任何人都可以提供一些关于 maven 面对虚假包装类型的决策的见解吗?

我想我应该补充一点,这个自定义模块似乎是“定义它自己的默认生命周期绑定”;我找到了一个为默认生命周期阶段定义目标绑定的 component.xml 文件。鉴于此,错误似乎是在抱怨没有声明为 clean 的绑定,但 component.xml 的格式似乎不支持。

【问题讨论】:

    标签: maven


    【解决方案1】:

    clean 阶段一直持续到完成,因为绑定到此阶段的目标与打包无关。

    另一方面,响应mvn install 命令应该做什么取决于包装。 Maven 遇到了一个未知的“custom-war”包装,所以它举手了。

    请参阅 Maven 的 correlation of phases to packaging

    【讨论】:

    • 但它似乎在说,见Lifecycle ID: clean,它在开始清洁生命周期时举起了手。我在这里误读了什么吗?
    • 你能成功运行mvn clean吗?可能是它似乎在清理期间失败,但在 POM 的初始解析期间遇到未知包装时确实失败了。 IIRC 支持新的打包类型,您需要将插件配置为提供扩展。我遇到了另一篇关于使用新包装的帖子 (stackoverflow.com/questions/1427722/…)。也许这提供了一些提示。
    猜你喜欢
    • 2013-03-07
    • 2011-10-27
    • 2020-01-29
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    • 2012-05-19
    • 2016-08-07
    相关资源
    最近更新 更多