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

Kom*_*ave 5 plugins archetypes pom.xml maven

我们想创建一个部分原型来将一个custom-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]
Run Code Online (Sandbox Code Playgroud)

作为测试,我们创建了一个假人,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]
Run Code Online (Sandbox Code Playgroud)

我们看到这个没有的例子archetype-resources/pom.xml.然而,我们正在使用Archetype 2.0x标准,这可能是为什么这个策略适用于该作者但不适用于我们自己.

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

我们已经搜索了Maven Archetype插件2.2文档,但几乎没有提到部分原型及其专门行为.

Kom*_*ave 4

事实证明,OP 中列出的第二条错误消息是由于 POM 属性冲突( 、artifactIdgroupId)造成的versionarchetype-resources/pom.xml从解决的问题中删除这些。

部分原型实际发生的情况是现有项目的 POM 与原型中的 POM 合并。所以这个属性冲突导致合并失败。

我们确定在探索源代码后应该进行合并。