我们想创建一个部分原型(prototype)来添加 custom-pom.xml
以及其他资源到现有项目中。然后自定义 pom 将通过 mvn -f custom-pom.xml
在生成的项目中使用.
因此,我们的原型(prototype)包含 src/main/resources/archetype-resources/osgi-pom.xml
,但不包含 pom.xml
在同一目录中。
我们使用了archetype:generate
适本地参数化以在现有项目上运行此原型(prototype)。这会产生:
[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]
作为测试,我们创建了一个虚拟
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: Don't override file /tmp/archetype/fabric-rf-server/pom.xml -> [Help 1]
我们看到了this example没有
archetype-resources/pom.xml
.然而,我们使用的是 Archetype 2.0x 标准,这可能是该策略适用于该作者而不适用于我们自己的原因。我们如何解决这个问题?部分原型(prototype)是否不适合将资源插入现有的 Maven 项目 - 项目是否必须是非 Maven?
我们搜索了Maven Archetype plugin 2.2 documentation但几乎没有提到部分原型(prototype)及其特殊行为。
最佳答案
事实证明,OP 中列出的第二条错误消息是由于 POM 属性冲突(artifactId
、groupId
和 version
)。从 archetype-resources/pom.xml
中删除这些解决了这个问题。
部分原型(prototype)实际发生的情况是现有项目的 POM 与原型(prototype)中的 POM 合并。所以这个属性冲突导致合并失败。
我们发现在探索 the source code 之后应该进行合并。 .
关于Maven Archetype Plugin - 如何使用不包含 pom.xml 的部分原型(prototype)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14121923/