Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
指定Maven';s本地存储库位置作为CLI参数_Maven - Fatal编程技术网

指定Maven';s本地存储库位置作为CLI参数

指定Maven';s本地存储库位置作为CLI参数,maven,Maven,是否可以将本地Maven存储库的位置设置为Maven命令行上的参数 问题是我没有使用~/.m2/存储库中的默认值。然而,我用-s settings.xml检查了一些正在使用自己的设置构建的项目。settings.xml没有指定我的本地存储库,因此Maven再次使用~/.m2/repository。。。我希望使用非默认的本地存储库位置,而不必在项目的settings.xml中添加元素 我试过了 -DlocalRepository=“…” $mvn调用程序:run-s settings.xml c

是否可以将本地Maven存储库的位置设置为Maven命令行上的参数

问题是我没有使用
~/.m2/存储库
中的默认值。然而,我用
-s settings.xml
检查了一些正在使用自己的设置构建的项目。settings.xml没有指定我的本地存储库,因此Maven再次使用
~/.m2/repository
。。。我希望使用非默认的本地存储库位置,而不必在项目的settings.xml中添加
元素

我试过了

  • -DlocalRepository=“…”
  • $mvn调用程序:run-s settings.xml clean install-DskipTests-DlocalRepositoryPath=
  • -Dsettings.localRepository
但这些选项都不起作用


因此,我想我必须决定是修改第三方settings.xml还是将我的本地回购移动到
~
一种可行的黑客方法是:

  • ${m2.localRepository}
    添加到settings.xml
  • 在mvn.sh或mvn.bat中,在执行的命令中的“$@”之前添加
    -Dm2.localRepository=/.m2/repository
    。这将使您的默认本地回购协议保持不变
  • 现在您可以使用
    mvn-Dm2.localRepository=。由于命令行系统属性在mvn脚本中添加到命令行之后添加到命令行,因此它将优先。(至少我很确定它在windows和linux上都是这样工作的,但测试会告诉我们。)

  • 使用maven属性
    maven.repo.local

    mvn-Dmaven.repo.local=$HOME/.my/other/repository clean install

    无需修改
    设置。xml

    对于git:

    alias mvn='mvn "-Dmaven.repo.local=$(git rev-parse --show-toplevel)/.m2/repository"'
    

    这在每个git存储库中使用一个单独的maven存储库

    ,这没有帮助,我在mvn脚本的“$@”之前添加了-Dm2.localRepository=“custom”,仍然使用~/.m2/repository。。。然后我还包括了-Dm2.localRepository=“custom”,在运行$mvn时,仍然使用~/.m2/repository…只是在settings.xml中没有localRepository元素,无法更改it@lisak:是否执行了将localRepository元素添加到settings.xml的步骤1?我对此进行了测试,它可以正常工作,只是您不能在mvn脚本中实际使用“~”别名。你必须输入一个绝对路径,尽管你可能会做一些其他的shell/batch脚本技巧来绕过它。它是有效的,但我真的没有解释。。。如果我在$M2_HOME/conf/settings.xml中声明localRepository而不执行步骤2,它将被-s settings.xml覆盖,并且不起作用,但在步骤2中它可以工作。。。但是只有在$M2_HOME/conf/settings.xml中没有localRepository的步骤2不起作用。。。这两个步骤1,2都必须应用,我甚至可以通过$mvn-Dm2.localRepository=。。很明显这不是你的错,但是Maven项目不应该提供
    settings.xml
    。请参阅本地存储库必须是绝对路径。在Windows上使用`mvn-D“maven.repo.local”=%USER\u HOME%/.my/other/repository clean install`我可以设置一个环境变量来实现相同的目标吗?@pound366否,AFAIKUsing maven-3.6.3本地存储库目录作为相对路径工作(至少在MacOS上)