使用requiredProps和fileSets

时间:2018-02-05 15:24:46

标签: java maven maven-archetype

我需要创建一个新的maven archetype,其中项目文件包含一些我希望为mvn archetype:generate提供的自定义参数。只有-DgroupId-DartifactIdversion才能正常使用。但我无法提供,例如-Dparam1=value1

我尝试使用requiredPropertiesfileSets,但它不起作用。 我该如何实现?

archetype.xml

<archetype xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype/1.0.0 http://maven.apache.org/xsd/archetype-1.0.0.xsd">
    <id>my-archetype</id>

    <requiredProperties>
        <requiredProperty key="param1">
            <defaultValue>lol</defaultValue>
        </requiredProperty>
    </requiredProperties>

    <fileSets>
        <fileSet filtered="true" encoding="UTF-8" >
            <directory>src/main/</directory>
        </fileSet>
    </fileSets>

    <resources>
        <resource>src/main/someFile.txt</resource>
    </resources>

</archetype>

的src /主/ someFile.txt

I am just a txt file, but I need ${param1} value to be here !

我还需要我的项目的pom.xml(mvn archetype:generate时生成的那个)来替换自定义属性。

的pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>${groupId}</groupId>
    <artifactId>${artifactId}-server</artifactId>
    <version>${version}</version>
    <packaging>pom</packaging>
    <name>This name has to contains ${param1} !</name>

    // ... all the rest stuff
</project>

1 个答案:

答案 0 :(得分:0)

根据archetype descriptor documentation,原型描述符需要命名为archetype-metadata.xml。该示例显示archetype.xml

另请注意,初始XML元素为archetype-descriptor,而不仅仅是archetype

文件也必须位于明确定义的位置,以便插件找到它们。

<yourArchetypeProject>
  src
    main
      resources
        archetype-resources
          <files and directories for project>
      META-INF
        maven
          archetype-metadata.xml

Maven文档肯定会更清楚。我在学习时发现this tutorial很有帮助。