我正在尝试向原型(prototype)添加其他变量。具体来说,我的原型(prototype)包含一个logback.xml文件,我想用我从该原型(prototype)生成的项目的名称填充日志文件名。
我正在这里的答案Passing extra properties to maven archetype:generate中执行指示,但是它说要在我的archetype-metadata.xml中添加一个<requiredProperties>
元素。我的原型(prototype)没有archetype-metadata.xml,它只有一个archetype.xml(当我从maven-archetype-archetype生成原型(prototype)时自动生成)。
在https://maven.apache.org/guides/mini/guide-creating-archetypes.html中,Maven将archetype.xml称为 Artifact 描述符。
我在archetype-metadata.xml上进行了搜索,并找到了它-http://maven.apache.org/archetype/archetype-models/archetype-descriptor/archetype-descriptor.html。 Maven也称其为原型(prototype)描述符,但其规范不包含我在archetype.xml中看到的id和resources元素。
archetype.xml和archetype-metadata.xml是同一件事吗?如果没有,他们的目的是什么?可以在我的archetype.xml文件中添加<requiredProperties>
元素吗?还是应该创建一个archetype-metadata.xml文件?
最佳答案
您应该按照上述文章中的建议创建原型(prototype)描述符(archetype-metadata.xml),
Passing extra properties to maven archetype:generate
这是我正在执行的生成项目的步骤:
mkdir temp
cd temp
git clone [email protected]: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=test
该流程完成后,您可以在测试文件夹中找到生成的项目。
在
pom.xml
中,artifactId设置为“test”,在src/main/resources/logback.xml
中也进行替换。