构建多模块maven archetype

生成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">

  4.0.0

  com.xxx

  pangu-archetype

  1.0.0-SNAPSHOT

  maven-archetype

  pangu-archetype

 

   

     

        org.apache.maven.archetype

        archetype-packaging

        3.0.1

     

   

   

     

       

          maven-archetype-plugin

          3.0.1

       

     

   

 

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文件进行模板替换,可以被替换的文本类似以下形式:

    ${groupId}

    ${rootArtifactId}

    ${version}


使用archetype:create生成工程时,会默认询问输入

groupId,

artifactId,

version,

package

四个属性值

如果生成工程需要更多的属性值,可以在

标签中定义,如下所示

default-value

...


可以在archetype-metadata.xml嵌套定义模块,类似以下

需要注意的是,嵌套的module所在的目录dir是一个相对路径,相对于父module路径。

你可能感兴趣的:(构建多模块maven archetype)