custom maven archetype:未使用版本的默认值

use*_*892 3 java maven maven-archetype

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

我该怎么做呢?

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

只是在基于原型创建项目时,我再次被提示输入版本.

感谢您的帮助和提示!

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

gly*_*ing 5

您可以在原型元数据中定义自定义属性.有一个看archetype-metadata.xmlMETA-INF/maven.例如:

my-archetype
|
+ src
  |
  + main
    |
    + resources
      |
      + META-INF
        |
        + maven
          |
          + archetype-metadata.xml
Run Code Online (Sandbox Code Playgroud)

自定义属性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>
Run Code Online (Sandbox Code Playgroud)

文档中的更多细节.

当您运行mvn archetype:generate引用具有上述配置的原型的命令时,您将在控制台输出中看到:

[INFO] Using property: version = 0.0.1-SNAPSHOT
Run Code Online (Sandbox Code Playgroud)

或者,如果您mvn archetype:generate使用参数运行命令,-Dversion=FOO那么您将在控制台输出中看到:

[INFO] Using property: version = FOO
Run Code Online (Sandbox Code Playgroud)

注意:当然,这个版本与archetypeVersion定义原型本身版本的版本不同,而不是原型生成的模块版本.