java – Maven坚持旧版本的系统依赖

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依赖:树来找到哪个工件可以传递

点赞