maven生成pom文件

Posted

技术标签:

【中文标题】maven生成pom文件【英文标题】:maven generating pom file 【发布时间】:2011-10-05 23:55:54 【问题描述】:

我使用 maven 3.0.3 并尝试为第三方 jar 生成 pom,如下所示:

mvn install:install-file -Dfile=cobra.jar -DgroupId=com.cobra -DartifactId=cobra -Dversion=0.98.4 -Dpackaging=jar -DgeneratePom=true

根据下面的链接,它应该生成正确的 pom.xml 并在 repo 中安装工件。 http://maven.apache.org/plugins/maven-install-plugin/examples/generic-pom-generation.html

同时,它返回这样一个错误:

[错误] 你指定的目标需要一个项目来执行,但那里 此目录中没有 POM (D:\cobra-0.98.4\lib)。请验证你 从正确的目录调用 Maven。 -> [帮助 1]

为什么它需要 pom.xml 而它应该生成 pom.xml?

【问题讨论】:

我只是在 Windows 7 上的 cmd 中运行这一行,它适用于 Maven 3.0.5。也许他们在这个版本中修复了它。 【参考方案1】:

这是一个老问题,但几分钟对我来说是一个严肃的 PITA,所以我想我会分享:

我刚刚遇到了这个问题,我相信这个问题可能与平台有关。真正的提示是,来自 Cyril 的答案的解决方案没有按预期工作:尽管我在命令行上指定了 -DgroupId=com.xyz-DartifactId=whatever 以及 POM 文件中的相应条目,但该 jar 安装在com/whatever 下的本地仓库。

这导致我尝试引用命令行参数,以及像这样格式化命令行(在删除 POM 文件之后)最终得到正确的结果:

mvn install:install-file "-Dfile=cobra.jar" "-DgroupId=com.cobra" "-DartifactId=cobra" "-Dversion=0.98.4" "-Dpackaging=jar" "-DgeneratePom=true"

有些引用无疑是多余的,但总比抱歉更安全,对吧?我碰巧在这台计算机上运行 Vista,如果这个问题是特定于这个操作系统版本的,我不会感到惊讶......顺便说一下,这是 Maven v3.0.4 的问题。

【讨论】:

多么垃圾的错误消息“您指定的目标需要一个项目来执行...”。 +1。使用控制台时,这对我有用。 CMD 无需引用即可按预期工作。 类似于 flesk 所写的内容,对于 Windows,我在 powershell 中得到该错误,而不是在 cmd 中,谢谢 flesk 作为一个额外的澄清,它的点搞乱了 powershell 解析。你只需要在参数中加上一个点。 哇,我才发现这个,我很生气。【参考方案2】:

您确定您正在执行install-file 目标吗?我检查了你的命令,它对我有用,但是当我放置一个空白 install :install-file(可能你有这个错字)时,将使用 install 目标,它需要一个 pom.xml。

尝试使用-X参数获取更多调试信息:

 -X,--debug       Produce execution debug output

我的系统

Maven

c:\>mvn -version

Apache Maven 3.0.3 (r1075438; 2011-02-28 18:31:09+0100)
Maven home: C:\progs\apache-maven-3.0.3
Java version: 1.6.0_21, vendor: Sun Microsystems Inc.
Java home: c:\Program Files (x86)\Java\jdk1.6.0_21\jre
Default locale: de_DE, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "x86", family: "windows"

安装插件

c:\>mvn -Dplugin=install help:describe

Name: Maven Install Plugin
Description: Copies the project artifacts to the user's local repository.
Group Id: org.apache.maven.plugins
Artifact Id: maven-install-plugin
Version: 2.3.1
Goal Prefix: install

This plugin has 3 goals:

install:help
  Description: Display help information on maven-install-plugin.
    Call
      mvn install:help -Ddetail=true -Dgoal=<goal-name>
    to display parameter details.

install:install
  Description: Installs the project's main artifact in the local repository.

install:install-file
  Description: Installs a file in the local repository.

For more information, run 'mvn help:describe [...] -Ddetail'

【讨论】:

没有这样的错字。你能告诉你使用的maven版本吗? 我有完全相同的版本......真的不知道,也许我会调试 maven 代码,看看那里发生了什么。【参考方案3】:

我找到了一个旁路。您需要像这样创建一个简单的 pom.xml:

<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.cobra</groupId>
    <artifactId>cobra</artifactId>
    <version>0.98.4</version>
</project>

它并不完美,但它对我有用。如果您找到更好的方法,我很感兴趣。

我的配置:

$mvn -version
Apache Maven 3.0.3 (r1075438; 2011-02-28 18:31:09+0100)
Maven home: /usr/local/maven
Java version: 1.6.0_20, vendor: Sun Microsystems Inc.
Java home: /usr/local/jdk1.6.0_20/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "2.6.32-25-generic-pae", arch: "i386", family: "unix"

$mvn -Dplugin=install help:describe
...
Name: Maven Install Plugin
Description: Copies the project artifacts to the user's local repository.
Group Id: org.apache.maven.plugins
Artifact Id: maven-install-plugin
Version: 2.3.1
Goal Prefix: install
...

【讨论】:

【参考方案4】:

尝试在cmd.exe 上运行它或在mvn 命令之前执行cmd 命令。

【讨论】:

我遇到了同样的问题,这将解决。【参考方案5】:

使用 maven 3.6.3 版,这对我来说可以在我选择的目录中生成 pom 文件:

C: mvn archetype:generate "-DgroupId=com.mycompany.app" "-DartifactId=my-app" "-DarchetypeArtifactId=maven-archetype-quickstart" "-DarchetypeVersion=1.4" "-DinteractiveMode=false"

【讨论】:

【参考方案6】:

只需在您的项目目录下找到您的 pom.xml 文件,然后执行相同的命令!它对我有用;)

【讨论】:

【参考方案7】:

如果您在使用 Maven 的命令行版本时遇到问题,您可能想尝试 Eclipse 的 M2E 插件。对于没有太多 Maven 经验的人来说,它更加用户友好。

【讨论】:

【参考方案8】:

当我将 Powershell 更改为 Cygwin 时,它对我有用。 Powershell 以某种方式错误地解析了命令行参数。

【讨论】:

【参考方案9】:

我在 Windows 中使用 maven 时遇到了这个错误,对我有用的是打开 cmd 而不是 PowerShell。 显然,当您不使用 cmd 执行此操作时,会出现某些错误。 我希望它有效。

【讨论】:

请提供更多细节问题,如添加错误或代码等

以上是关于maven生成pom文件的主要内容,如果未能解决你的问题,请参考以下文章

如何让 gradle 在项目的根目录为 maven 用户生成一个有效的 pom.xml 文件?

尝试从 WSDL 文件生成时出现 Maven 问题

maven项目打包时生成dependency-reduced-pom.xml

带有 <systemPath> 标记的 Maven 项目 POM 中的条目未包含在生成的战争文件 WEB-INF\lib 文件夹中

将生成的 jar 文件的名称从 Maven pom.xml 传递到 Dockerfile

maven项目 pom.xml文件解析