美文网首页
构建多模块maven archetype

构建多模块maven archetype

作者: Hello_Yi | 来源:发表于2019-04-12 20:10 被阅读0次

    生成archetype

    最简单的方式是从已有的工程中逆向生成archetype,步骤如下:

    ① 切换到工程的根路径:

    cd pangu2

    ② 运行mvn命令

    mvn archetype:create-from-project -Darchetype.filteredExtensions=java

    -Darchetype.filteredExtensions参数指明哪些类型的文件要在模板中忽略掉

    ③ 去target目录找到生成的archetype

    archetype文件夹是一个maven 工程,pom.xml内容如下:

    <?xml version="1.0" encoding="UTF-8"?>

    <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/xsd/maven-4.0.0.xsd">

      <modelVersion>4.0.0</modelVersion>

      <groupId>com.xxx</groupId>

      <artifactId>pangu-archetype</artifactId>

      <version>1.0.0-SNAPSHOT</version>

      <packaging>maven-archetype</packaging>

      <name>pangu-archetype</name>

      <build>

        <extensions>

          <extension>

            <groupId>org.apache.maven.archetype</groupId>

            <artifactId>archetype-packaging</artifactId>

            <version>3.0.1</version>

          </extension>

        </extensions>

        <pluginManagement>

          <plugins>

            <plugin>

              <artifactId>maven-archetype-plugin</artifactId>

              <version>3.0.1</version>

            </plugin>

          </plugins>

        </pluginManagement>

      </build>

    </project>

    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>${groupId}</groupId>

        <artifactId>${rootArtifactId}</artifactId>

        <version>${version}</version>

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

    groupId,

    artifactId,

    version,

    package

    四个属性值

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

    <requiredProperties>标签中定义,如下所示

    default-value

    ...

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

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

    相关文章

      网友评论

          本文标题:构建多模块maven archetype

          本文链接:https://www.haomeiwen.com/subject/paphwqtx.html