生成archetype
最简单的方式是从已有的工程中逆向生成archetype,步骤如下:
① 切换到工程的根路径:
cd pangu2
② 运行mvn命令
mvn archetype:create-from-project -Darchetype.filteredExtensions=java
-Darchetype.filteredExtensions参数指明哪些类型的文件要在模板中忽略掉
③ 去target目录找到生成的archetype
archetype文件夹是一个maven 工程,pom.xml内容如下:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
artifactId取的是源工程的artifactId+archetype
④ 根据需要手动删除一些文件,改变一些配置项
⑤ 安装artchetype到本地maven 仓库
$ mvn install
⑥ 使用archetype
$ cd /tmp/archetype/
$ mvn archetype:generate -DarchetypeCatalog=local
archetype工程说明
以pangu-archetype-standard为例
➜ pangu-archetype-standard git:(master) tree
.
├── pangu-archetype.iml
├── pom.xml//archetype工程本身的pom.xml
├── src
│ └── main
│ └── resources
│ ├── META-INF
│ │ └── maven
│ │ └── archetype-metadata.xml // archetype元数据
│ └── archetype-resources//archetype模板文件夹
│ ├── __rootArtifactId__-facade
│ │ ├── __rootArtifactId__-facade-sub
│ │ │ └── pom.xml
│ │ └── pom.xml
│ ├── __rootArtifactId__-service
│ │ ├── __rootArtifactId__-service-sub
│ │ │ └── pom.xml
│ │ └── pom.xml
│ ├── __rootArtifactId__-web
│ │ ├── __rootArtifactId__-web-sub
│ │ │ └── pom.xml
│ │ └── pom.xml
│ ├── bin
│ │ └── a.sh
│ ├── filter
│ │ └── a.property
│ └── pom.xml
注意目录结构中包含 __rootArtifactId__ 的文件夹,在生成工程的时候,文件夹名 __rootArtifactId__ 部分会被重命名为传入的artifactId.
archetype-metadata.xml说明
archetype-metadata.xml主要包含三类信息
生成工程需要的配置属性
工程包含的文件列表
工程包含的模块信息
一个简单的archetype-metadata.xml如下所示:
src/main/java
**/*.java
使用以上archetype-metadata定义,用archetype:create生成工程时,会拷贝archetype-resources文件夹下src/mian/java所有的java类型的文件,使用Velocity模板引擎对java文件进行模板替换,可以被替换的文本类似以下形式:
使用archetype:create生成工程时,会默认询问输入
groupId,
artifactId,
version,
package
四个属性值
如果生成工程需要更多的属性值,可以在
default-value
...
可以在archetype-metadata.xml嵌套定义模块,类似以下
需要注意的是,嵌套的module所在的目录dir是一个相对路径,相对于父module路径。