Maven原型插件-如何使用不包含pom.xml的部分原型?

Maven原型插件-如何使用不包含pom.xml的部分原型?,maven,plugins,pom.xml,archetypes,Maven,Plugins,Pom.xml,Archetypes,我们希望创建一个部分原型,将自定义pom.xml以及其他资源添加到现有项目中。然后,定制pom将通过mvn-f custom pom.xml在生成的项目中使用 因此,我们的原型包含src/main/resources/archetype resources/osgi pom.xml,但不在同一目录中包含pom.xml 我们使用适当参数化的archetype:generate在现有项目上运行此原型。这将产生: [ERROR] Failed to execute goal org.apache.ma

我们希望创建一个部分原型,将
自定义pom.xml
以及其他资源添加到现有项目中。然后,定制pom将通过
mvn-f custom pom.xml
在生成的项目中使用

因此,我们的原型包含
src/main/resources/archetype resources/osgi pom.xml
,但不在同一目录中包含
pom.xml

我们使用适当参数化的
archetype:generate
在现有项目上运行此原型。这将产生:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:2.2:generate (default-cli) on project standalone-pom: org.apache.maven.archetype.exception.ArchetypeGenerationFailure: Error merging velocity templates: Unable to find resource 'archetype-resources/pom.xml' -> [Help 1]
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:2.2:generate (default-cli) on project standalone-pom: Don't override file /tmp/archetype/fabric-rf-server/pom.xml -> [Help 1]
作为测试,我们创建了一个虚拟的
archetype resources/pom.xml
,然后重新运行
generate
目标。这将产生:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:2.2:generate (default-cli) on project standalone-pom: org.apache.maven.archetype.exception.ArchetypeGenerationFailure: Error merging velocity templates: Unable to find resource 'archetype-resources/pom.xml' -> [Help 1]
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:2.2:generate (default-cli) on project standalone-pom: Don't override file /tmp/archetype/fabric-rf-server/pom.xml -> [Help 1]
我们看到它没有
原型资源/pom.xml
。然而,我们使用的是原型2.0x标准,这可能就是为什么该策略适用于该作者而不是我们自己

我们如何解决这个问题?部分原型是否不适合将资源插入到现有的Maven项目中?该项目必须是非Maven项目吗


我们已经搜索了,但几乎没有提到部分原型及其特殊行为。

结果表明,OP中列出的第二条错误消息是由于POM属性冲突(artifactId、
groupId
version
)。将这些从
原型资源/pom.xml
中删除解决了这个问题

部分原型的实际情况是,现有项目的POM与原型中的POM合并。因此,此属性冲突导致合并失败


我们确定应该在探索之后进行合并。

Per不要覆盖文件错误,这是因为存在一个或多个重叠的文件集,配置为将相同的文件复制到相同的位置,请检查原型的“
achetype metadata.xml
”,删除重复的配置将解决此问题

例如,如果config文件夹中有test.xml,velocity将对其进行两次处理,对于第二次处理,它将打印警告。如果文件为pom.xml,则会导致生成错误

 <fileSet filtered="true" encoding="UTF-8">
  <directory>config/src</directory>
  <includes>
    <include>**/*.vm</include>
    <include>**/*.xml</include>
  </includes>
</fileSet>
<fileSet filtered="true" encoding="UTF-8">
  <directory>config</directory>
  <includes>
    <include>**/*.xml</include>
  </includes>
</fileSet>

配置/src
**/*.vm
**/*.xml
配置
**/*.xml

不要覆盖文件错误,因为存在一个或多个重叠的文件集


删除重复的文件集可以解决问题。

Maven似乎患有严重的双相情感障碍。如果我给它原型resources/pom.xml,它会告诉我不要重写它。如果我不给它,它会告诉我它需要它。如果我给它的是空的,它会抱怨它没有开始。如果我从它开始,它只会返回到步骤1并告诉我不要重写pom.xml。“你是怎么摆脱这个陷阱的?”卡卡奥不确定,这是很久以前的事了。我仍然有工作文件-当您添加
时,我想您包括了所有常见的名称空间废话等。?因此,我的工作从以下内容开始:
4.0.0