【问题标题】:Overwriting generated target in local maven repository with Maven-Eclipse?使用 Maven-Eclipse 覆盖本地 Maven 存储库中生成的目标?
【发布时间】:2011-04-07 20:47:48
【问题描述】:

Maven 不会覆盖我本地存储库中构建的 Eclipse 项目版本。我只更改了 META-INF/MANIFEST.MF 文件,但 Maven 似乎没有认识到这一点,因此不会覆盖本地存储库中的工件。如何强制它覆盖?这是 Maven 日志:

[INFO] 
[INFO] --- maven-jar-plugin:2.2:jar (default-jar) @ message ---
[INFO] 
[INFO] --- maven-install-plugin:2.3:install (default-install) @ message ---
[INFO] **Skipped re-installing C:\dev\ws\Message\target\message-0.0.1.jar to C:\Users\Tim\.m2\repository\samba\message\message\0.0.1\message-0.0.1.jar, seems unchanged**
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.915s
[INFO] Finished at: Fri Sep 03 15:22:12 CEST 2010
[INFO] Final Memory: 7M/175M
[INFO] ------------------------------------------------------------------------

【问题讨论】:

  • 哦,我应该补充一点,如果我通过 Eclipse 的导出功能导出项目(并将其部署在 ServiceMix 中),如果我从 ServiceMix Karaf shell 安装工件则不会发生预期的变化通过 osgi:install -s mvn:samba.message/message/0.0.1

标签: eclipse osgi maven-2 apache-servicemix


【解决方案1】:

好的,我想我刚刚看到 Maven 没有将 METAINF/MENIFEST.MF 文件与目标中的其他文件一起部署。看来我必须以某种方式解决这个问题。抱歉,我是 Maven 新手。

【讨论】:

    【解决方案2】:

    在 maven 中使用 RELEASE 版本时要小心。你不应该“重新部署”它们——因为合同是它们永远不会再改变了。如果您将 RELEASE 版本部署到 global Maven 存储库(例如 Nexus),您将无法再次重新部署它。如果需要更改,您必须构建一个新版本。

    在开发阶段使用 SNAPSHOT 版本 (0.0.1-SNAPSHOT)。这些可以更改和重新部署。

    如果您只使用本地存储库,则规则不是那么严格,但您应该了解 RELEASE / SNAPSHOT 版本差异。

    【讨论】:

      【解决方案3】:

      问题是我使用了 bundle 插件来生成 osgi 包。有了这些,捆绑插件会生成它自己的 MANIFEST.MF 文件,并且不使用我放入资源中的文件。事实上,当我尝试使用自己的 MANIFEST.MF 文件时,除了 bundle 插件生成的文件之外,我也遇到了一些错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-01-06
        • 1970-01-01
        • 2011-09-15
        • 2016-09-29
        • 2013-10-11
        • 1970-01-01
        • 1970-01-01
        • 2017-07-31
        相关资源
        最近更新 更多