2

编辑 3:我还尝试通过此线程中提到的 java 选项参数设置 maven 代理。


编辑 2:我确定 intellij idea 使用相同的 settings.xml、相同的 maven 二进制文件和与系统 maven 相同的本地存储库。


编辑 1:我尝试检查每个工作负载的构建日志,主要区别在于如何在构建日志的最开始调用 maven。

对于 intellij 的想法,如下所示:

C:\Program Files\Java\jdk1.8.0_101\bin\java.exe" -Dmaven.multiModuleProjectDirectory=C:\Users\eugene\IdeaProjects\alluxio -Dmaven.home=C:\apache-maven-3.5.4-bin\apache-maven-3.5.4 -Dclassworlds.conf=C:\apache-maven-3.5.4-bin\apache-maven-3.5.4\bin\m2.conf "-Dmaven.ext.class.path=C:\Program Files\JetBrains\IntelliJ IDEA\plugins\maven\lib\maven-event-listener.jar" -Dfile.encoding=UTF-8 -classpath C:\apache-maven-3.5.4-bin\apache-maven-3.5.4\boot\plexus-classworlds-2.5.2.jar org.codehaus.classworlds.Launcher -Didea.version2019.2.4 -DskipTests=true -T 2C clean install -DskipTests -Dmaven.javadoc.skip -Dfindbugs.skip -Dcheckstyle.skip -Dlicense.skip

对于系统外壳,maven 刚刚启动而没有此调用信息。


我正在使用 maven从源代码构建项目Alluxio 。

我尝试了 Windows 10 和 Ubuntu,在使用 intellij idea 时发现了同样的问题,让我详细说明一下。

  • 操作系统:Windows 10/Ubuntu 18.04
  • Maven:3.5.4
  • 构建命令:mvn -T 2C clean install -DskipTests -Dmaven.javadoc.skip -Dfindbugs.skip -Dcheckstyle.skip -Dlicense.skip

Alluxio 可以直接使用 maven 3.5.4 成功构建,但使用 intellij idea 失败并出现多个错误。让我感到困惑的是,我将 intellij idea 配置为使用系统 maven 3.5.4 并使用完全相同的构建命令。为什么错误发生在这里而不是系统外壳。

我遇到的错误是这样的:

Failure to find com.google.guava:listenablefuture:jar:sources:9999.0-empty-to-avoid-conflict-with-guava in https://repo1.maven.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced

并且还喜欢:

sourceFile C:\Users\eugene\IdeaProjects\alluxio\table\server\underdb\target\alluxio-table-server-underdb-2.2.0-SNAPSHOT-jar-with-dependencies.jar does not exist

从intellij idea触发maven build的方法:

  • 点击右上角的maven图标
  • 点击Execute Maven Goal
  • 输入mvn -T 2C clean install -DskipTests -Dmaven.javadoc.skip -Dfindbugs.skip -Dcheckstyle.skip -Dlicense.skip并输入以启动构建

intellij idea 中的 maven 设置是默认设置,只是将 maven 二进制文件从内置二进制文件更改为系统 maven 3.5.4。

提前感谢您的帮助。

4

1 回答 1

1

我已经看到两个问题会产生如您所见的错误消息,它与 IntelliJ 无关。

第一种发生在 Maven 无法从存储库成功下载工件时(例如,网络中断)。它会将工件标记为失败,并拒绝重试,直到经过一段时间。清理本地 Maven 缓存或删除该工件的文件夹将解决此问题。

第二种情况发生在两个单独的 Maven 构建尝试从不同的存储库下载相同的工件时。许多年前,Maven 遇到了人们构建开源项目(例如,Apache Commons)的修改版本并将它们发布到公开可用的存储库中的问题。我不记得细节,但这引起了很多问题。Maven 现在记录用于获取工件的存储库。当两个 Maven 项目使用不同的仓库时,第二个构建的项目会因为仓库不匹配而失败。我在切换到私有存储库 Artifactory 并且尚未迁移所有项目时发生了这种情况。

由于您尝试使用两个工具构建同一个项目,因此您的问题似乎是第二个问题的变体。我怀疑 IntelliJ 使用的 settings.xml 与命令行中可用的不同,并且 IntelliJ 使用不同的存储库。可以在 settings.xml 以及项目的 POM 中指定存储库。

首先尝试删除本地缓存并从 IntelliJ 构建。如果它成功然后 shell 构建失败,这就是你的问题。


更新:有关 Maven 开始跟踪存储库的原因的更多详细信息,请参阅此答案,但请注意跟踪文件现在称为_remote.repositories.

https://stackoverflow.com/a/16870552/252344

于 2020-01-01T15:07:23.197 回答