0

我有一个使用 JAR 打包的 Maven 项目。当我运行安装阶段时,它将在我的本地存储库中安装 Project-1.0.jar 和 Project-1.0.pom 文件。

现在我想用分类器构建 JAR。这很简单:我只需将这一行添加到我的 jar 插件配置中:

  <plugin>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
      <classifier>whatever</classifier>   
      [...]
    </configuration>
  </plugin>

现在,它在我的 repo 中安装了 Project-1.0-whatever.jar,但不再安装 POM。

万一这很重要,我想将此功能与配置文件结合使用,即我想使用具有不同配置文件的不同分类器构建 JAR。

我想要 POM 的原因是因为我还有其他项目依赖于这个。当我构建其中一个时,它会尝试为这个依赖项找到一个 POM。如果不能,它会很乐意使用 JAR,但这对我来说不是一个可以接受的解决方案,原因如下:

它会尝试联系外部存储库并查找它已经够糟糕了,但更糟糕的是,我们使用共享存储库,因此它会从共享存储库下载 POM,这可能不是我想要的 - 例如,如果我只是对 POM 进行了更改,并正在尝试对其进行测试。

是否有解决方案,或者任何人都可以提出合理的解决方法?

编辑:我刚刚发现该问题影响 Maven 2.2.1,但不影响 Maven 3.0.5。因此,这可能是版本之间的错误或功能差异。我仍然会对 Maven 2 的解决方案/解决方法感兴趣,因为将项目迁移到 Maven 3 是一件复杂的事情,而且不太可能发生。

4

1 回答 1

0

事实证明,原因与 Maven 版本本身无关,而与 maven-install-plugin 的版本有关。事实证明 2.3 之前的版本有这个错误。

Maven 的旧安装可能会遇到这个问题,因为 Maven 2 将使用它拥有的任何版本的插件,除非在 POM 中明确指定了版本,但默认情况下包含 maven-install-plugin 并且很有可能对于 POM 根本不明确指定它(就像我的情况一样)。

于 2013-07-19T16:03:45.573 回答