我正在尝试向原型(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中也进行替换。

10-07 21:56