制作maven archetype的一些tips

主要针对maven 2.x版本, 不确定3.x版本还有类似的问题.

  • 对于archetype-metadata.xml文件中的requiredProperties来说, maven是按照字母顺序来读取属性的, 所以要注意property之间的依赖关系, 但是maven内置的属性又是按照groupId, artifactId, version的顺序来读取

  • 对于fileSet来说:

    1
    2
    3
    4
    5
    6
    <fileSet filtered="true" packaged="true" encoding="GBK">
    <directory>src/main/java</directory>
    <includes>
    <include>**/*.java</include>
    </includes>
    </fileSet>

filtered="true"表示使用velocity template engine来解析(会针对${xxx}的内容进行替换), packaged="true"表示是否将对应的文件放置于包路径下, 也就是前面requiredProperty中定义的package属性(这个是maven系统默认的一个属性)