Maven中archetype.xml和archetype-metadata.xml之间的区别是什么

时间:2016-03-31 19:57:35

标签: maven

我正在尝试将其他变量添加到我的原型中。具体来说,我的原型包含一个logback.xml文件,我想用日志文件名生成我正在生成的项目名称。

我正在执行此处Passing extra properties to maven archetype:generate答案中的说明,但它说要在我的archetype-metadata.xml中添加<requiredProperties>元素。我的原型没有archetype-metadata.xml,它只有一个archetype.xml(当我从maven-archetype-archetype生成我的原型时自动生成)。

https://maven.apache.org/guides/mini/guide-creating-archetypes.html中,Maven将archetype.xml称为工件描述符。

我用google搜索archetype-metadata.xml,找到了这个 - http://maven.apache.org/archetype/archetype-models/archetype-descriptor/archetype-descriptor.html。 Maven也称它为原型描述符,但它的规范不包含我在archetype.xml中看到的id和resources元素。

archetype.xml和archetype-metadata.xml是一回事吗?如果没有,他们的目的是什么?我可以在archetype.xml文件中添加<requiredProperties>元素吗?或者我应该创建一个archetype-metadata.xml文件?

2 个答案:

答案 0 :(得分:1)

您应该按照我在上述帖子Passing extra properties to maven archetype:generate

中的建议创建原型描述符(archetype-metadata.xml)

以下是我正在执行以生成项目的步骤:

mkdir temp

cd temp

git clone git@github.com:jibbyj/appArchetype.git

cd appArchetype

mvn clean install

mkdir run01

cd run01

LS

mvn archetype:generate \

-DarchetypeGroupId = com.company.archetype \

-DarchetypeArtifactId = appArchetype \

-DarchetypeVersion = 1.2-SNAPSHOT \

-DarchetypeCatalog = local \

-DinteractiveMode = false \

-DgroupId = com.company \

-DartifactId = test \

-DappName =测试

此流程完成后,在测试文件夹中可以找到生成的项目。在pom.xml中,artifactId设置为“test”,同样在src / main / resources / logback.xml中进行替换。

答案 1 :(得分:1)

因为这个问题没有答案,archetype.xml 和 archetype-metadata.xml 之间的区别是什么:

如文档中所述,https://maven.apache.org/archetype/archetype-common/archetype.html archetype.xml 用于架构版本 1.0.0。 archetype-metadata.xml 与架构版本 1.1.0 一起使用。

archetype.xml:

Maven 的旧原型描述符模型(即原型 1.0.x)。 关于原型的元数据存储在位于其 jar 文件 META-INF/maven 目录下的 archetype.xml 文件中。

原型元数据.xml:

这是用于描述原型元数据的原型描述符的参考。 关于原型的元数据存储在位于其 jar 文件 META-INF/maven 目录下的 archetype-metadata.xml 文件中。