Maven找不到我的自定义maven原型。

3

无法使用自定义创建的maven原型。


Maven告诉我:您的过滤器不匹配任何原型。 我的系统:

  • Windows 7
  • Java 7
  • Maven 3.2

我已经采取的步骤是:

  1. 创建我的项目
  2. 在命令提示符中导航到我的项目并运行以下命令:
    mvn archetype:create-from-project
  3. 导航到target\generated-sources\archetype并运行此命令:
    mvn install archetype:update-local-catalog
  4. 回到我的Projects文件夹并运行以下命令:

    mvn archetype:generate -DarchetypeCatalog=local

    运行该命令后,我看到:

    [INFO] Scanning for projects...
    [INFO]
    [INFO] Using the builder org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleTreadedBuilder with a thread count of 1
    [INFO]
    [INFO] -----------------------------------------------------
    [INFO] Building restTemplate-archetype 1.0-SNAPSHOT
    [INFO] -----------------------------------------------------
    [INFO]
    [INFO] >>> maven-archetype-plugin:2.3:generate (default-cli) @restTemplate-archetype >>>
    [INFO] <<< maven-archetype-plugin:2.3:generate (default-cli) @restTemplate-archetype <<<
    [INFO]
    [INFO] --- maven-archetype-plugin:2.3:generate (default-cli) @restTemplate-archetype ---
    [INFO] Generating project in Interactive mode
    [INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0)
    Choose archetype:
    Your filter doesn't match any archetype (hint: enter to return to initial list)
    choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): :

然而 如果我在Eclipse中导航到New->Project->Maven Project 我去选择一个原型,导航到我的archetype-catalog.xml(位于我的~/.m2/目录中),我可以看到我的原型已准备好使用……但如果我使用我的“默认本地”,它就不在那里?

我的settings.xml文件夹将我的本地存储库设置为

 <localRepository>~/Projects_3.7.1/.m2/repository</localRepository>

如果我尝试使用我的archetype-catalog.xml,Eclipse将允许我使用我的原型...但它会破坏任何XML,但这是另一个帖子的问题。我相信如果我让Maven从我的自定义原型生成我的项目,那么一切都会很好。
有什么建议吗?
1个回答

4
运行额外的mvn archetype:crawl命令。
我不确定这是为什么需要的。在我的Mac系统上,mvn install会执行所有必需的步骤,包括update-local-catalog任务。在Windows上运行似乎会出现你观察到的相同问题。在这种情况下,对存储库进行额外的爬行似乎可以解决问题。根据你的maven版本,注意可能出现爬行方面的问题,请参考此处

2
谢谢,这解决了我的问题。我可以提供一个线索:运行mvn install archetype:update-local-catalog后,我的**/.m2/archetype-catalog.xml被更新了。但是使用-X运行mvn archetype:generate -DarchetypeCatalog=local时,生成器会在/.m2/repository/archetype-catalog.xml中查找目录。确实,mvn archetype:crawl将目录写入:/.m2/repository/archetype-catalog.xml。现在即使我从/.m2**中删除XML(就像我根本没有运行update-local-catalog一样),生成也能正常工作。希望我能更好地理解。 - Scott Kurz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接