【问题标题】:Error "The goal you specified requires a project to execute but there is no POM in this directory" after executing maven command执行maven命令后报错“你指定的目标需要一个项目来执行,但是这个目录下没有POM”
【发布时间】:2013-04-27 05:45:49
【问题描述】:

我在C:\Users\AArmijos\Desktop\Factura Electronica\MIyT\componentes-1.0.4\sources\pom.xml 中有一个pom.xml,我执行了:

mvn install:install-file -DgroupId=es.mityc.jumbo.adsi -DartifactId=xmlsec-1.4.2-ADSI -Dversion=1.0 -Dpackaging=jar -Dfile=C:\Users\AArmijos\Desktop\Factura Electronica\MIyT\componentes-1.0.4\core\xmlsec-1.4.2-ADSI-1.0.jar

但是它返回了以下错误:

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.310s
[INFO] Finished at: Thu May 02 16:48:29 COT 2013
[INFO] Final Memory: 2M/15M
[INFO] ------------------------------------------------------------------------
[ERROR] The goal you specified requires a project to execute but there is no POM
 in this directory (C:\Users\AArmijos). Please verify you invoked Maven from the
 correct directory. -> [Help 1]

谁能解释为什么会失败?

【问题讨论】:

  • 你检查过这里吗? maven.apache.org/plugins/maven-install-plugin/usage.html 您的模板似乎无效。我看到 .jar 文件出现在第一个参数中。
  • 是的,这个命令在另一台电脑上可以正常运行,但是我的电脑上不行,我安装了最新版本的jdk和maven
  • 好的,现在我更好地看到了错误。你在这个文件夹中有一个 pom.xml,你称之为 mvn install-install-file 吗?如果你有,你能更新你的问题吗?
  • 是的,我有一个 pom.xml
  • 将每个参数放在双引号中解决了我的问题。

标签: maven-3


【解决方案1】:

此链接有帮助:https://stackoverflow.com/a/11199865/1307104

我通过为每个参数添加引号来编辑我的命令,如下所示:

mvn install:install-file "-DgroupId=org.mozilla" "-DartifactId=jss" "-Dversion=4.2.5" "-Dpackaging=jar" "-Dfile=C:\Users\AArmijos\workspace\componentes-1.0.4\deps\jss-4.2.5.jar"

成功了。

【讨论】:

  • 我什么时候需要报价?我现在很困惑,终于找到了这样一个垃圾错误信息的答案,我松了一口气......
  • 我在执行deploy:deploy-file 时遇到了类似的问题,但我的问题是我错过了其中一个选项前面的破折号(“-”)。
  • 如果您在 powershell 中,您可以直观地看到 PowerShell 如何在命令行上使用颜色分隔参数,或者在命令前面放置“echo”。比如,“echo mvn install:install-file...”。
  • 在早期版本的 maven 中,我从不使用双引号。但是,现在没有它就行不通。这解决了我的问题。
  • 这是因为文件夹路径中有空格。添加引号可以解决问题,或者您可以重命名带有下划线或其他空格的文件夹。
【解决方案2】:

对于在 Windows 上遇到此问题且上述方法均无效的任何人,请尝试从 cmd.exe 运行此程序。通过 PowerShell 执行这些命令每次都会导致安装失败。

【讨论】:

  • 同样的问题,Powershell 和 CMD 参数处理的工作方式不同,似乎混淆了 MVN
  • 遵循 Maven 的入门指南并尝试在 Windows PowerShell 上执行“mvn -B archetype:generate .....”并遇到类似错误。切换到不同的命令行客户端(mintty git bash)解决了这个问题。
  • 在 PowerShell 中,. 运算符很重要,因为它与大多数其他 .NET 语言一样用于对象属性/方法访问。如果您在 args 中有点,我过去通常会引用这些点,以便让 PowerShell 将它们视为文字字符串。
【解决方案3】:

在 Windows 上,当您使用 PowerShell 时,您必须用引号将所有参数括起来。

因此,如果您想创建一个 maven webapp 原型,您可以执行以下操作:

先决条件:

  1. 确保您已安装 maven 并将其放在 PATH 环境变量中。

如何:

  1. 打开windows powershell
  2. mkdir MyWebApp
  3. cd MyWebApp
  4. mvn archetype:generate "-DgroupId=com.javan.dev" "-DartifactId=MyWebApp" "-DarchetypeArtifactId=maven-archetype-webapp" "-DinteractiveMode=false"

注意:这仅在 windows 10 powershell 上测试

【讨论】:

  • 已在 Mac OS X 上验证。另外,对于 dprowizard java-simple,您可以使用以下命令:mvn archetype:generate "-DarchetypeGroupId=io.dropwizard.archetypes" "-DarchetypeArtifactId=java-simple" 与交互模式或额外参数。
  • 命令提示符下也存在同样的问题。将参数值括在引号中是真正的解决方案。
【解决方案4】:

为 Windows 用户再添加一个答案。如果这些都不能解决问题。

不要在=之前或之后添加space

-DgroupId= com.company.module //Wrong , Watch the space after the equal to 
-DgroupId=com.company.module //Right 

最好将所有内容都放在双引号内,例如“-DgroupId=com..” 这会给你准确的错误,而不是一些随机的错误。

奇怪的是,maven 甚至不在乎在文档中提及这一点。

【讨论】:

  • 您的解决方案奏效了,我将所有 -D 部分都放在“”中......真是令人惊讶的是,像 Maven 这样设计不佳和编码错误的产品竟然如此受欢迎......跨度>
【解决方案5】:

就我而言,这是因为我从浏览器复制粘贴了命令,结果发现破折号不是 ASCII 破折号,只需删除并再次输入破折号。

http://www.toptip.ca/2017/04/maven-most-weird-error-causing-failure.html

【讨论】:

    【解决方案6】:

    mvn clean 更改为mvn clean --file *.pom 为我解决了这个问题。

    【讨论】:

      【解决方案7】:

      在 Windows 上,在非管理员命令提示符下运行时出现此错误。当我以管理员身份运行它时,错误消失了。

      【讨论】:

      • 可能您在 PowerShell 和 CMD 下为管理员运行非管理员,因此真正的区别在于它是否在 PowerShell 中运行。
      【解决方案8】:

      1.在你的项目文件中创建一个lib文件夹,

      2.将你的jarFiles复制到lib文件夹

      3.右键单击您的 jarFile 转到构建路径>添加到构建路径(现在您的 jar 文件是您引用的库的一部分)

      4.打开命令提示符并导航到您的项目目录并写入

      mvn install: install-file "-Dfile=<yourJarFileName>.jar" "-DgroupId=<yourGroupID>" "-DartifactId=<yourArtifactId>" "-Dversion=<yourVersion>" "-Dpackaging=jar" 
      

      6.通过在 Eclipse 中打开来重建本地存储库索引- 转到窗口>显示视图>其他>maven>maven存储库。 右键单击本地存储库并点击“RebuildIndex”

      5.打开你的 pom.xml 文件并添加你的依赖项

          <dependency>
              <groupId><yourGroupID></groupId>
              <artifactId><yourArtifactId></artifactId>
              <version><yourVersion></version>
          </dependency>
      

      然后运行

      mvn clean
      mvn compile 
      mvn test 
      

      【讨论】:

      • 我一直想知道一个简单的 maven 命令会如何失败......我想出了你的解决方案,瞧!有效!没有人在 " 中编写 java 参数,这是我所缺少的。非常感谢:)
      【解决方案9】:

      我在 Netbeans 中突然遇到了这个错误(但它可以从命令行运行),结果发现其他一些程序更改了命令提示符的默认目录。并且因为 Netbeans 在调用 maven 时会运行“cmd /c”,所以它在一个不正确的目录中启动。

      在 Regedit 中签出

      的值
      HKEY_CURRENT_USER\Software\Microsoft\Command Processor\Autorun  
      

      如果已设置,您可能应该将其删除以解决问题。 (1)

      (我在尝试解决此问题时来到这里,可能不是 100% 适用于当前问题 - 但可能对其他人有所帮助)

      (1) Changing default startup directory for command prompt in Windows 7

      【讨论】:

        【解决方案10】:
        • 执行 maven 命令需要 pom.xml 文件,该文件包含有关项目的信息以及 Maven 用于构建项目的配置详细信息。它包含大多数项目的默认值。

        • 确保 porject 应在根级别包含 pom.xml。

        【讨论】:

          【解决方案11】:

          添加 pom.xml 文件所在的 Jenkinsfile。 提供 dir('project-dir') 上的目录路径,

          例如:

          node {
          
              withMaven(maven:'maven') {
          
                  stage('Checkout') {
                      git url: 'http://xxxxxxx/gitlab/root/XXX.git', credentialsId: 'xxxxx', branch: 'xxx'
                  }
          
                  stage('Build') {
          
                      **dir('project-dir') {**
                          sh 'mvn clean install'
          
                          def pom = readMavenPom file:'pom.xml'
          
                          print pom.version
                          env.version = pom.version
                      }
                  }
              }
          }
          

          【讨论】:

            【解决方案12】:

            Maven路径配置可能有问题,如果你使用的是类unix的Operator System。

            第一步:在~/.bash_profile路径下新建文件

            JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home
            CLASSPAHT=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
            PATH=$JAVA_HOME/bin:$PATH:
            export JAVA_HOME
            export CLASSPATH
            export PATH
            

            第 2 步:shell 运行 source ~/.bash_profile 或修改 zsh 配置文件(添加新行:source ~/.bash_profile

            【讨论】:

              【解决方案13】:

              请注意参数/命令中的任何空格或错误。 mvn 错误消息可能不是那么具有描述性,但我已经意识到,通常空格/遗漏也会导致该错误。

              【讨论】:

                【解决方案14】:

                我在从 jboss 存储库下载副本后尝试安装 java jms-1.1.jar。

                遇到完全相同的错误,特别是在 Windows 上。尝试了一切,即更改了 maven 版本/jdk 版本,但无济于事。

                我正在使用下面的命令。

                mvn install:install-file -DgroupId=javax.jms -DartifactId=jms -Dversion=1.1 -Dpackaging=jar -Dfile=jms-1.1.jar
                

                最后从主要问题的评论中取了一个que,并将每个参数值放在双引号内

                mvn install:install-file -DgroupId="javax.jms" -DartifactId="jms" -Dversion="1.1" -Dpackaging="jar" -Dfile="jms-1.1.jar"
                

                这解决了问题。这个问题似乎非常特定于 Windows 环境。在 ubuntu 和 mac 上,该命令可以正常工作。

                【讨论】:

                • 其他一些答案和帖子建议使用来自 apache 的 jar 的变体,但由于工件 id 不同,它并不是真正的解决方案。
                【解决方案15】:

                “您指定的目标需要一个项目来执行”:答案就在您的问题中。我遇到了同样的问题。 在项目文件夹中运行“mvn 命令”,还要确保它是一个 maven 配置的项目,因此包含“POM.xml”文件,你应该一切顺利!

                【讨论】:

                • 这个命令是安装本地 3rd 方 jar。我们没有项目源代码
                【解决方案16】:

                检查文件名,即 pom.xml 文件拼写正确,文件扩展名为 .xml

                这个错误的例子是

                pom.ml pm.xl

                【讨论】:

                  【解决方案17】:

                  请从 POM.XML 所在目录运行。

                  【讨论】:

                  • 投反对票,因为 install:install-file 目标不需要(不能?)在项目上运行。它用于手动将工件安装到存储库中。
                  • 我正在尝试上传一个没有 Pom xml 的 zip 文件。被否决
                  猜你喜欢
                  • 1970-01-01
                  • 2022-07-19
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2022-01-02
                  • 2012-12-02
                  • 2017-02-22
                  • 1970-01-01
                  相关资源
                  最近更新 更多