当前位置: 首页 > 知识库问答 >
问题:

直接在shell中调用maven和从intellij IDEA中调用maven的区别

谭向晨
2023-03-14

编辑3:我也试图通过这个线程中提到的java选项参数来设置maven代理。

编辑2:我确信intellij idea使用相同的设置。xml,与system maven相同的maven二进制文件和相同的本地存储库。

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

对于intellij idea,如下所示:

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。

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

  • 操作系统:windows 10/Ubuntu 18.04
  • Maven:3.5.4
  • Build命令:mvn-t2c干净安装-DskipTests-Dmaven。javadoc。跳过-dfindbug。跳过-Dcheckstyle。跳过-许可证。跳过

可以直接使用maven 3.5.4成功构建Alluxio,但使用intellij idea失败,出现了几个错误。让我困惑的是,我将intellij idea配置为使用system 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构建的方法:

  • 单击右上角的maven图标

除了将maven二进制文件从内置二进制文件更改为系统maven 3.5.4之外,intellij思想中的maven设置为默认设置。

提前感谢您的帮助。

共有1个答案

仲孙磊
2023-03-14

我已经看到了两个问题,它们会像您看到的那样产生错误消息,而这与IntelliJ无关。

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

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

由于您试图使用两个工具构建同一个项目,因此您的问题似乎是第二个问题的变体。我怀疑IntelliJ使用了不同的设置。xml比您从命令行获得的要多,而且IntelliJ使用的是不同的存储库。可以在设置中指定存储库。xml以及项目的POM。

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

更新:有关Maven为什么开始跟踪存储库的更多详细信息,请参阅此答案,但请注意,跟踪文件现在称为\u remote。存储库

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

 类似资料:
  • 我需要你的帮助,请理解调试一个maven应用程序使用Wildfly和Intellij的想法。 谢谢,

  • 问题内容: 在Python 2.7和3中,我使用以下方法来调用超类的函数: 我看到也可以在python3中用和替换。 这两种方式都有什么优点或缺点?至少直接从我这里调用它更有意义,但是也许有充分的理由只能在使用元类时使用(我通常会避免)。 问题答案: 对于单继承,只是引用基本类型的一种更简单的方法。这样,您可以使代码更具可维护性,例如,如果您想更改基本类型的名称。当您在各处使用时,只需在生产线中进

  • 问题内容: 我有一个多模块Maven项目(https://github.com/veniltonjr/msplearning) 我的一个模块 ,我需要运行程序从Maven构建命令“全新安装 ”,但是当我调用这些目标出现以下错误执行: 未指定Maven应用程序目录,并且系统属性中未提供$ {maven.home}。 请至少指定其中一个。 在Maven Invoker文档中,据说M2_HOME环境变量

  • 问题内容: 现在,我有一个批处理文件,其中包含使用svn和调用maven’clean install’更新项目的命令。如何在詹金斯(Jenkins)中创建一些工作来进行类似的操作?我应该将其写入ant文件(对不起,如果它是一个愚蠢的主意,我刚刚听说过它,但是我不知道它到底是什么,该怎么办)还是还有其他方法? 谢谢 问题答案: 就像建议的arghtype一样,您需要使用Jenkin自己的源代码管理,

  • 问题内容: 我需要针对将返回零或一的数据库运行查询(检查是否存在特定条件)。我已获得审查的技术规范指出,我应该创建一个存储过程,该存储过程将返回单行,并带有称为“结果”的单列,该列将包含0或1的位值。我不确定存储过程将是最好的方法,但是不确定一点,所以我想请教您一些意见。我可以想到的两个选择是: 1:创建一个SQL标量值函数,该函数执行查询并返回一点。然后,可以使用“ TEXT” SqlComma