Maven install:install-file : 指定的文件不存在

Posted

技术标签:

【中文标题】Maven install:install-file : 指定的文件不存在【英文标题】:Maven install:install-file : specified file not exists 【发布时间】:2016-07-26 17:55:15 【问题描述】:

我尝试将自定义 jar 添加到我的项目中(添加到 pom.xml)。当我做手术时

mvn install:install-file -Dfile=<path-to-file> -DgroupId=<myGroup> -DartifactId=<myArtifactId> -Dversion=<myVersion> -Dpackaging=<myPackaging> -DlocalRepositoryPath=<path>

我实际上收到了一个错误:指定的文件不存在。但文件在文件夹中 - 这就是问题所在。我该如何解决这个问题?或者我如何在没有这一步的情况下添加自定义 jar?我知道 scope ,但它不能正常工作 - maven 变量 $basedir 不能在 systemPath 中使用。

Maven 3.3.9

更新 1:实际上,现在我发现 smth new:Maven 不喜欢 groupId 和 version 中的点。经过一些尝试,我安装了文件,但路径错误,因为我在 maven repo 的 org_my_local_file 文件夹中收到了文件,而不是(例如)org.my.local.file 树。

【问题讨论】:

您为&lt;path-to-file&gt; 指定了什么?文件在磁盘上的实际位置是什么? 我从通用模块的文件夹中运行了这个命令,这就是为什么文件路径只是他的名字。错误是,这个文件夹中的文件不存在,但他是:) 最后在&lt;path-to-file&gt;.jar中指定 【参考方案1】:

我这样做了很多次,它按预期工作。 你到底是什么意思:

Maven 不喜欢 groupId 和 version 中的点。

你得到什么例外? 你得到 org_my_local_file 因为我认为你交换了 '.'在针对 '_' 的 groupId 中?

你可以在这里找到一个很好的教程,在那里你可以看到它是如何正确完成的:

How to include custom library into maven local repository?

编辑: 看起来你正在使用 Windows。众所周知,powershell 会导致问题。看看这里,可能是你必须转义一些字符,有一些可能的解决方案:

install maven artifact

【讨论】:

所以。我的命令正是 mvn install:install-file -Dfile=modules\mylib.jar -DgroupId=org.mylib -DartifactId=my-lib -Dversion=1.7 -Dpackaging=jar。之后我收到错误:未知生命周期阶段“.mylib”。 通过“特别是已知 powershell 会导致问题”拯救了我的一天。【参考方案2】:

我在尝试初始化我们的基础开发环境时遇到了这个问题。我们使用 Ant 脚本来初始化 Maven、我们的开发人员服务器和其他工具,包括将一些 3rd 方 jar 安装到本地 Maven 存储库中。从 Ant 1.9.11 中调用 Maven 时出现此错误“指定的文件 '&lt;path&gt;\true' 不存在”。

我还使用这个答案来指定 Ant 脚本中标识的路径,并在运行批处理脚本之前将它们设置在批处理脚本模板中。 具体来说,这个答案为构建批处理脚本提供了很多帮助:https://***.com/a/36298099/2336934。没花多少:

    <!--  generate the batch file -->
    <tempfile property="temp.file" suffix=".properties" deleteonexit="true" destdir="$env.TEMP" />
    <echoproperties destfile="$temp.file" />
    <replaceregexp file="$temp.file" match="([^=]*)=" replace="@\1@=" byline="true" />
    <copy file="$basedir/scripts/install-jars.template" tofile="$basedir/scripts/install-jars.bat" />
    <replace file="$basedir/scripts/install-jars.bat" replacefilterfile="$temp.file" />

    <echo message="Running batch file for Maven setup" />
    <exec executable="$basedir/scripts/install-jars.bat" />
    <delete file="$basedir/scripts/install-jars.bat" deleteonexit="true" />

传递的参数没有任何问题,但必须正确指定。在命令窗口中临时运行您尝试在脚本中执行的命令有助于在尝试嵌入脚本之前验证命令语法和功能。

我什至创建了一个空的true 文件来满足抱怨该文件不是有效的 POM 文件的错误。用基本的 POM 内容填充它会导致另一个错误。所以读者要注意,这个关于“真实不存在”的事情是红鲱鱼。

将 Maven install:install-file 命令移出批处理文件是解决问题的关键。它还允许我将命令中的引号指定为 " 而不是 &amp;quot;,因为这些命令最初是在 Ant 脚本 (xml) 中指定的。

【讨论】:

以上是关于Maven install:install-file : 指定的文件不存在的主要内容,如果未能解决你的问题,请参考以下文章

Maven学习笔记

maven install与maven build的区别

maven系列之二maven项目的创建和maven项目的结构

Maven项目的创建及相关配置

Maven学习-----Maven中央存储库

如何配置maven java 路径