【问题标题】:mvn download package files into current directorymaven 下载包文件到当前目录
【发布时间】:2021-07-23 00:35:44
【问题描述】:

谁能帮助为什么 mvn 命令总是将依赖文件下载到当前目录?它应该存储在 M2_HOME 中吧?

我试过了

mvn package
mvn help:system

$M2_HOME 已正确设置

C:\> mvn --version
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: C:\Users\Documents\bin\apache-maven-3.6.3\bin\..
Java version: 1.8.0_252, vendor: Azul Systems, Inc., runtime: C:\Users\Documents\bin\Zulu\zulu-8\jre
Default locale: en_SG, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

【问题讨论】:

  • 不应该设置M2_HOME 变量,因为它不是必需的。你应该在你的PATH 中有你的可执行文件,这就足够了。只有JAVA_HOME 应该正确指向您的JDK。默认情况下,存储下载文件(从中心)的位置是 $HOME/.m2/repository,如果确实需要,可以使用 settings.xml 进行更改,该位置需要位于 $HOME/.m2...

标签: maven maven-3


【解决方案1】:

@khmarbaise,感谢您的回复。我尝试听从您的建议,但问题仍然存在。

首先我注意到我的 $HOME 变量没有设置,但 $JAVA_HOME 很好

所以我设置了 $HOME 变量并重新启动命令提示符,但结果仍然相同 - 'mvn package' 仍然将包下载到当前工作目录而不是 $HOME/.m2/repository。

其次,我检查了 $HOME/.m2/settings.xml 文件。您在下面看到任何问题吗?

<settings
    xmlns="http://maven.apache.org/SETTINGS/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
    <localRepository/>
    <interactiveMode/>
    <usePluginRegistry/>
    <offline/>
    <pluginGroups/>
    <servers/>
    <mirrors>
        <mirror>
            <id>xxx-maven</id>
            <mirrorOf>central</mirrorOf>
            <name>xxx maven repo</name>            <url>https://xxx/nexus/repository/repo/</url>
        </mirror>
    </mirrors>
    <profiles/>
    <activeProfiles/>
</settings>

【讨论】:

  • $HOME 是您的主目录的占位符。在您的 settings.xml 文件中删除条目 &lt;localRepository/&gt;... 并重试并删除所有空条目,除了您为 nexus repo 配置的条目..
  • 感谢@khmarbaise,它几乎是正确的。我必须以某种方式对 localRepository 进行硬编码。请将您的评论作为单独的答案重新发布,以便我可以将其标记为已接受的答案。
  • 为什么需要“硬编码”本地存储库?默认值是 $HOME/.m2/repository,它或多或少始终适合...(在 CI 环境中除外)它由 CI 解决方案控制...
  • 老实说,我不知道为什么。当我删除本地存储库时,下载的包仍在当前目录中。 @khmarbaise
  • 您的设置或项目 pom 文件中有一些奇怪的东西...
【解决方案2】:

M2_HOME 通常设置为环境变量。您可以执行以下操作来检查其值。

  echo $M2_HOME

现在看起来就像在 Windows 上一样,我认为正确的命令是:

  echo %M2_HOME%

这些包通常在%M2_HOME%/repository下可用

【讨论】:

    猜你喜欢
    • 2015-10-09
    • 2017-08-03
    • 2020-05-21
    • 2010-10-07
    • 2012-11-02
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    相关资源
    最近更新 更多