maven生成pom文件

时间:2011-07-15 09:05:24

标签: maven maven-3 pom.xml

我使用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

根据下面的链接,它应该在repo中生成适当的pom.xml并安装工件。 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?

9 个答案:

答案 0 :(得分:76)

这是一个老问题,但对我来说是一个严肃的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 :(得分:8)

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

尝试使用-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'

答案 2 :(得分:4)

我找到了旁路。您需要创建一个简单的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
...

答案 3 :(得分:1)

尝试在cmd.exe上运行它并在mvn命令

之前执行cmd命令

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

答案 7 :(得分:0)

当我在Windows中使用Maven时遇到了该错误,对我有用的是打开cmd而不是PowerShell。 当您不使用cmd时,显然会出现某些错误。 我希望它能起作用。

答案 8 :(得分:0)

使用 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"< /p>