在非平凡的依赖项中解决maven的“无法解决工件”的问题

时间:2011-05-22 19:22:00

标签: java maven dependencies

在构建旧项目时,有时会遇到可怕的Failed to resolve artifact错误。

我的工作就是搜索该特定工件的jarpom并使用mvn install:install-file goal to manually install it locally

这解决了这个简单的案例,但有时项目对工件的依赖并不简单,包括在项目的pom字段中,例如:

      <scope>runtime</scope>

或更糟:

      <exclusion>
        <groupId>cglib</groupId>
        <artifactId>cglib-nodep</artifactId>
      </exclusion>

你会如何处理这些案件?有没有办法将这些字段添加到命令中?

1 个答案:

答案 0 :(得分:1)

运行时依赖项是Maven将添加到测试类路径中的依赖项,包含在程序集或war中,但不包含在编译类路径中。如果您需要运行测试或软件包,您只需执行完全相同的安装:install-file thing (或者,更好的是,运行repo manager并部署它)。运行时是范围

另一方面,如果你碰到了:

<dependency>
   <groupId>abelian</groupId>
   <artifactId>grape</groupId>
   <type>transitive</type>
</dependency>

然后你需要使用-Dpackaging = transitive来安装:install-file,类似地使用'classifier'(-Dclassifier)。

如果您需要在依赖关系树中添加一些在其pom中有排除的东西,那么您将需要找到或构造具有该排除的POM,并将其传递给安装文件目标,该目标具有POM为-D。你无法告诉安装:install-file告诉它在从空中构建POM时添加排除。