发博词

经测试,Maven Archetype Plugin这个插件非常好使;用这个插件去处理一个符合Maven最佳实践的项目,会得到一个非常好的结果;

User Guide

mvn archetype:create-from-project

在项目根模块下面执行mvn archetype:create-from-project命令,会生成一个maven archetype项目。再此项目下执行maven install,会将此archetype安装到本地maven仓库;

mvn archetype:generate -DarchetypeCatalog=local

使用此命令按照提示操作,可以使用刚刚安装到本地的maven仓库的archetype创建一个项目;

Notice

  1. 生成的项目的各个Module的artifactId都带着groupId前缀
  2. Maven插件对package的处理过程,将现有项目的包名去掉groupid,不会匹配去掉artificialid

常用变量

有时候生成的maven archetype工程可能还需要修改一下,就会用到一些内置的变量。

  1. ${groupId}:groupid;
  2. ${artifactId}:当前模块的artifactId,每个模块一个,来自当前模块的配置信息,看archetype-metadata小节
  3. ${rootArtifactId}:根模块的artifactId
  4. ${parentArtifactId}:父模块的 artifactId,模块划分多层级的时候会用到
  5. ${version}

archetype-metadata

<module id="${rootArtifactId}-application-business" dir="business" name="${rootArtifactId}-application-business">
<fileSets>
<fileSet filtered="true" packaged="true" encoding="UTF-8">
<directory>src/main/java</directory>
<includes>
<include>**/*.java</include>
</includes>
</fileSet>
</fileSets>
</module>

打包空目录

如果我们想将应用的空目录也做到archetype中去,没有找到对应的设置方法,修改生成的archetype-metadata文件是个选择。

<fileSet filtered="true" packaged="true" encoding="UTF-8">
<directory>src/main/java</directory>
<includes>
<include>**/*.java</include>
</includes>
</fileSet>
<fileSet encoding="UTF-8">
<directory>src/main/resources</directory>
<includes>
<include>**/*.yml</include>
<include>**/*.json</include>
</includes>
</fileSet>
<fileSet filtered="true" packaged="true" encoding="UTF-8">
<directory>src/test/java</directory>
<includes>
<include>**/*.java</include>
</includes>
</fileSet>
<fileSet encoding="UTF-8">
<directory>src/test/resources</directory>
<includes>
<include>**/*.yml</include>
<include>**/*.json</include>
</includes>
</fileSet>