在构建旧项目时,有时会遇到可怕的Failed to resolve artifact
错误。
我的工作就是搜索该特定工件的jar
和pom
并使用mvn install:install-file
goal to manually install it locally。
这解决了这个简单的案例,但有时项目对工件的依赖并不简单,包括在项目的pom字段中,例如:
<scope>runtime</scope>
或更糟:
<exclusion>
<groupId>cglib</groupId>
<artifactId>cglib-nodep</artifactId>
</exclusion>
你会如何处理这些案件?有没有办法将这些字段添加到命令中?
答案 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时添加排除。