Maven原型不使用属性来创建模块名称

ton*_*nio 8 maven maven-archetype

我创建了一个原型,你可以使用必需的属性moduleName设置moduleName(或期望),这里是原型元数据xml(简化,我也试过类似的结果)

<?xml version="1.0" encoding="UTF-8"?>
<archetype-descriptor name="modules-archetype">

  <requiredProperties>
    <requiredProperty key="moduleName">
    </requiredProperty>
  </requiredProperties>

  <modules>
    <module id="modules-${moduleName}-api" 
            dir="modules-__moduleName__-api" 
            name="modules-${moduleName}-api">
      <fileSets>
        <fileSet encoding="UTF-8">
          <directory>src/main/java</directory>
        </fileSet>
      </fileSets>
    </module>
  </modules>

</archetype-descriptor>
Run Code Online (Sandbox Code Playgroud)

安装和生成后,目录名称或artifactid中不使用moduleName值,resuting值为

For the directory:        project/module-__moduleName__-api
For the pom/artifactId:   module-${moduleName}-api
Run Code Online (Sandbox Code Playgroud)

该值在项目的其他一些文件中被正确替换,因此我猜没有拼写问题.

我见过很多类似的东西,但是所有这些都使用了rootArtifactId,事实上如果我使用rootArtifactId(作为名称的起始部分),它会按预期工作.

无法找到类似的问题,任何想法为什么它不工作,或如何使其工作?

ton*_*nio 2

查看 maven-archetype 源(版本 2.2),似乎唯一可能使用的值是从 DefaultFilesetArchetypeGenerator 中提取的 rootArtifactId

   while (subprojects.hasNext() ) {

        ModuleDescriptor project = subprojects.next();

        File moduleOutputDirectoryFile = new File( outputDirectoryFile
             , StringUtils.replace( project.getDir()
                   , "__rootArtifactId__"
                   , rootArtifactId 
                   ));
        ...........
Run Code Online (Sandbox Code Playgroud)