5

我们想创建一个部分原型来将一个custom-pom.xml以及其他资源添加到现有项目中。然后自定义 pom 将通过mvn -f custom-pom.xml.

因此,我们的原型包含 a ,但在同一目录src/main/resources/archetype-resources/osgi-pom.xml中不包含 a 。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]

我们看到了这个没有archetype-resources/pom.xml. 然而,我们使用的是 Archetype 2.0x 标准,这可能是该策略适用于该作者而不适用于我们自己的原因。

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

我们搜索了Maven Archetype 插件 2.2 文档,但几乎没有提到部分原型及其特殊行为。

4

3 回答 3

4

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

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

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

于 2013-01-02T12:59:09.393 回答
0

Per Don't override file error,这是因为有一个或多个重叠的文件集,配置为将相同的文件复制到相同的位置,检查您的原型的“ achetype-metadata.xml”,删除重复的配置将解决此问题

对于下面的例子,如果配置文件夹中有一个 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>
于 2014-12-14T13:43:45.480 回答
0

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

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

于 2017-11-13T02:05:19.533 回答