我有一个使用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是一件复杂的事情,不太可能发生。
答案 0 :(得分:0)
原因与Maven版本无关,而且与maven-install-plugin版本有关。事实证明2.3之前的版本有这个错误。
Maven的旧安装有可能遇到这个问题,因为除非在POM中明确指定了版本,否则Maven 2将使用它拥有的任何版本的插件,但默认包含maven-install-plugin, POM很可能根本没有明确指定它(就像我的情况一样)。