我们希望创建一个部分原型,以便将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]
作为测试,我们创建了一个虚拟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标准,这可能是为什么这个策略适用于该作者但不适用于我们自己。
我们如何解决这个问题?部分原型是否不适合将资源插入现有Maven项目 - 项目是否必须是非Maven?
我们已经搜索了Maven Archetype plugin 2.2 documentation,但几乎没有提到部分原型及其专门行为。
答案 0 :(得分:4)
事实证明,OP中列出的第二条错误消息是由于POM属性冲突(artifactId
,groupId
和version
)。从archetype-resources/pom.xml
中删除这些已解决了问题。
部分原型实际发生的是现有项目的POM与原型中的POM合并。所以这个属性冲突导致合并失败。
我们确定在探索the source code后会发生合并。
答案 1 :(得分:0)
每不要覆盖文件错误,因为有一个或多个重叠的文件集,配置为将相同的文件复制到同一位置,请检查您的原型' s " achetype-metadata.xml
",删除重复的配置将解决此问题
对于下面的例子,如果config文件夹中有一个test.xml,它将按速度处理两次,对于第二个进程,它将打印警告。如果文件是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>
答案 2 :(得分:0)
不要覆盖文件错误,因为有一个或多个重叠的文件集。
删除重复的文件集可以解决问题。