My Maven项目依赖于非Maven库,它被编码为系统依赖项:
<dependency>
<groupId>com.example</groupId>
<artifactId>foo</artifactId>
<version>${foo.version}</version>
<scope>system</scope>
<systemPath>${foo.jar}</systemPath>
</dependency>
可以通过本地属性控制库的位置:
<properties>
<foo.version>2.1.1</foo.version>
<foo.basedir>/usr/local</foo.basedir>
<foo.libdir>${foo.basedir}/lib</foo.libdir>
<foo.jar>${foo.basedir}/java/foo-${foo.version}.jar</foo.jar>
</properties>
最近,库从2.1.1版本切换到2.2.0版本,因此我更改了foo.version属性,但是Maven似乎停留在旧版本上:
...
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to resolve artifact.
Missing:
----------
1) com.example:foo:jar:2.1.1
...
我已经运行了mvn依赖:purge-local-repository(很多次,实际上).字符串2.1.1不会出现在我的POM,profiles.xml或settings.xml中的任何位置.尽管如此,每次我尝试构建我的项目时,Maven都会因上述错误而失败.
这里发生了什么? Maven存储依赖版本信息的位置在哪里?如何更新它?
最佳答案 我认为${foo.version}可能会被解析为过滤属性.你能检查一下src / main / filters下的属性文件吗?
不确定这是否确实是问题但只是试一试并更新回来.
我能想到的另一个原因是 – 可能存在对com.example的传递依赖:foo:jar:2.1.1.这是一些需要2.1.1版本此工件的其他依赖项.您可以通过执行mvn依赖:树来找到哪个工件可以传递