Maven可以在使用分类器进行构建和工件时安装POM吗?

时间:2013-07-19 14:18:13

标签: java maven

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

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

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

现在,这可以在我的仓库中安装Project-1.0-whatever.jar,但不再安装POM。

如果它很重要,我想将此功能与配置文件结合使用,即我想用不同的配置文件构建具有不同配置文件的JAR。

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

它很糟糕,它会尝试联系外部回购并寻找它,但更糟糕的是,我们使用共享回购,因此它将从共享仓库下载POM,这可能不是我想要的 - 例如如果我只是对POM进行了更改并试图测试它们。

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

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

1 个答案:

答案 0 :(得分:0)

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

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