我在 Windows 10 上使用 Maven 3.9.1。我还使用 Eclipse EE 2023-03,其中包含 m2e(Eclipse 对 Maven 的支持)。我正在使用 POM 检查插件版本更新版本 Maven 插件 https://www.mojohaus.org/versions/versions-maven-plugin/,但即使其他人在检查同一个 POM 时在 Maven Central 中看到可用的更新,许多也没有出现。正在讨论这个问题版本 Maven 插件问题 #959 https://github.com/mojohaus/versions/issues/959,但我在这里发布这个问题是希望更广泛的受众能够阐明为什么 Maven 会“卡住”只看到旧版本。
我从this pom.xml https://github.com/globalmentor/globalmentor-root/blob/bce5bdbac7797b5b9114a72e5da2f4d76f3e24a7/pom.xml,它使用org.codehaus.mojo:versions-maven-plugin:2.12.0
,这反过来(我被告知)使用Maven 工件解析器 https://maven.apache.org/resolver/。 (请注意,我已经尝试过最新的org.codehaus.mojo:versions-maven-plugin:2.15.0
以及,结果相同。我使用这个 POM 是因为它可以在线获取,并且不包含任何会导致混淆的版本;最初我以为这是问题所在问题 #959 https://github.com/mojohaus/versions/issues/959,但事实并非如此。)
我想看看哪些插件已经过时,所以我运行了:
mvn versions:display-plugin-updates
它显示了这一点:
[INFO] The following plugin updates are available:
[INFO] maven-failsafe-plugin .......................... 2.22.2 -> 3.0.0-M7
[INFO] maven-release-plugin ............................ 2.5.3 -> 3.0.0-M6
[INFO] maven-site-plugin .............................. 3.12.1 -> 4.0.0-M3
[INFO] maven-surefire-plugin .......................... 2.22.2 -> 3.0.0-M7
[INFO] org.springframework.boot:spring-boot-maven-plugin .. 2.7.3 -> 3.0.5
然而在问题 #959 https://github.com/mojohaus/versions/issues/959,其他人运行相同的命令并得出不同的答案。下面是两个例子:
[INFO] org.springframework.boot:spring-boot-maven-plugin .. 2.7.3 -> 3.1.0
请注意,我的输出仅显示 v3.0.5 适用于org.springframework.boot:spring-boot-maven-plugin
。此外,其他一些插件也有可用的更高版本。
[INFO] com.akathist.maven.plugins.launch4j:launch4j-maven-plugin 2.1.3 -> 2.4.1
我的输出甚至没有显示com.akathist.maven.plugins.launch4j:launch4j-maven-plugin
;显然它认为当前的 v2.1.3 是最新可用的!
Maven Resolver 似乎在某个较早的时间点以某种方式“卡住”了。
我用以下命令运行 Maven-X
选项,这是与相关的输出的一部分com.akathist.maven.plugins.launch4j:launch4j-maven-plugin
:
…
[DEBUG] Checking com.akathist.maven.plugins.launch4j:launch4j-maven-plugin for updates newer than 2.1.3
[DEBUG] Could not find metadata com.akathist.maven.plugins.launch4j:launch4j-maven-plugin/maven-metadata.xml in local (C:\Users\user\.m2\repository)
[DEBUG] Skipped remote request for com.akathist.maven.plugins.launch4j:launch4j-maven-plugin/maven-metadata.xml, locally cached metadata up-to-date
[DEBUG] [com.akathist.maven.plugins.launch4j:launch4j-maven-plugin].version=2.1.3
[DEBUG] [com.akathist.maven.plugins.launch4j:launch4j-maven-plugin].artifactVersion=2.1.2
[DEBUG] [com.akathist.maven.plugins.launch4j:launch4j-maven-plugin].effectiveVersion=2.1.3
[DEBUG] [com.akathist.maven.plugins.launch4j:launch4j-maven-plugin].specified=true
…
这个debug信息好像是说找不到C:\Users\user\.m2\repository\com\akathist\maven\plugins\launch4j\launch4j-maven-plugin\maven-metadata.xml
。事实上该文件不存在!相反,我有C:\Users\user\.m2\repository\com\akathist\maven\plugins\launch4j\launch4j-maven-plugin\maven-metadata-central.xml
。 (我不知道有什么区别。)
更不祥的一行是这一行:
[DEBUG] Skipped remote request for com.akathist.maven.plugins.launch4j:launch4j-maven-plugin/maven-metadata.xml, locally cached metadata up-to-date
是什么可能导致我的机器上的 Maven Resolver 在较早的时间点“卡住”,和/或完全跳过检查 Maven Central 是否有许多插件的较新版本?
(请注意,我不想删除整个C:\Users\user\.m2\repository\
目录树,或者以其他方式“强制”Maven Resolver 联系远程存储库。我更愿意首先了解导致当前行为的原因,以便我可以调查为什么会首先发生这种情况,以防止将来再次发生。)