Java 自定义maven原型:未使用版本的默认值

Java 自定义maven原型:未使用版本的默认值,java,maven,maven-archetype,Java,Maven,Maven Archetype,在我的maven原型定义中,当用户不输入任何内容时,我希望将默认版本设置为0.0.1-SNAPSHOT。但是,当我基于原型创建项目时,总是会提示我输入版本,默认值为1.0-SNAPSHOT 如何正确地执行此操作 我在archetype.properties文件中定义了一个version属性,当我编译archetype时,它会显示正确的版本,当我更改archetype.properties中的值时,我可以看到控制台输出会相应地更改 就在基于原型创建项目时,我再次收到了输入版本的提示 谢谢你的帮助和

在我的maven原型定义中,当用户不输入任何内容时,我希望将默认版本设置为0.0.1-SNAPSHOT。但是,当我基于原型创建项目时,总是会提示我输入版本,默认值为1.0-SNAPSHOT

如何正确地执行此操作

我在archetype.properties文件中定义了一个version属性,当我编译archetype时,它会显示正确的版本,当我更改archetype.properties中的值时,我可以看到控制台输出会相应地更改

就在基于原型创建项目时,我再次收到了输入版本的提示

谢谢你的帮助和提示


(如有必要,我将提供代码)

您可以在原型元数据中定义自定义属性。查看
META-INF/maven
中的
archetype metadata.xml
。例如:

my-archetype
|
+ src
  |
  + main
    |
    + resources
      |
      + META-INF
        |
        + maven
          |
          + archetype-metadata.xml
version
的自定义属性如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<archetype-descriptor name="basic">
    <requiredProperties>
        <requiredProperty key="version">
            <defaultValue>0.0.1-SNAPSHOT</defaultValue>
        </requiredProperty>
    </requiredProperties>
</archetype-descriptor>
或者,如果使用参数
-Dversion=FOO
运行
mvn原型:generate
命令,您将在控制台输出中看到:

[INFO] Using property: version = 0.0.1-SNAPSHOT
[INFO] Using property: version = FOO

注意:这个版本当然是,与
archetypeVersion
分开,后者定义了原型本身的版本,而不是原型生成的模块的版本。

您的原型元数据模式是什么?指定
-Dversion=0.0.1-SNAPSHOT
没有帮助吗?@nullpointer我认为,如果用户没有指定-Dversion,那么它就没有帮助了我们需要一些退路。或者-Dversion总是必需的?你不是说requiredProperties而不是requiredParameters吗?首先,谢谢,它可以工作:)但是,我对groupId和package做了同样的事情,但它不断提示我这些,并且它使用原型本身的groupId作为默认值。但是:在生成的pom中,正确显示了groupId(我通过字符串替换从artifactId中获得它)。你知道我还缺少什么吗?如果你定义了一个
requiredProperty
,而没有
defaultValue
,那么你会被提示为该属性提供一个值。如果使用
defaultValue
定义
requiredProperty
,则将使用默认值,除非明确为该属性提供值。这是
requiredProperties
的预期行为。没有更多的细节,我无法诊断您的具体问题。你也许可以提出一个问题,你提供的细节越多,就越有可能有人能帮助你。啊,我想我明白了。。。我设置的默认值已从另一个属性({artifactId.replaceAll(“-”,“)})动态生成。。。这就是我得到提示的原因,因为默认值在velocity运行之前不会实际生成…对吗?或者这是可能的?听起来似乎有道理