使用Maven Archetype插件制作项目脚手架(一)

Archetype是一个Maven项目模板工具包。通过Archetype我们可以快速搭建Maven项目。比如我们在ide里面创建项目时,可以选择很多maven内置的Archetype,我们最常用的可能是maven-archetype-quickstart

当然maven提供了能力,让我们自定义项目结构,比如下图如果我们想要基于Archetype来自动生成下面多模块结构的脚手架,我们可以先手动建立下面的代码结构

然后把下面插件加入到上面项目主pom中:

xml 复制代码
<build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-archetype-plugin</artifactId>
                    <version>3.0.1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.6.1</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.0.2</version>
                    <configuration>
                        <encoding>UTF-8</encoding>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

然后在该项目的根目录下执行如下命令,来生成Archetype的模板:

sql 复制代码
mvn archetype:create-from-project

执行完毕后,在\target\generated-sources\archetype目录下会生成内容如下,该内容就是Archetype模板:

在该目录下执行mvn install把模板安装到本地仓库,然后就可以执行下面命令来生成自己应用的项目结构了:

bash 复制代码
mvn archetype:generate -DarchetypeGroupId=com.jiaduo -DarchetypeArtifactId=project-template-archetype -DarchetypeVersion=1.0-SNAPSHOT -DarchetypeCatalog=local -DgroupId=com.jiaduo -DartifactId=order -Dversion=1.0-SNAPSHOT -DinteractiveMode=false

生成后的项目结构如下:

当然如果你想要使用代码的调用方式,可参考如下:

cs 复制代码
public class Main {


    public static void main(String[] args) {


        String DgroupId ="com.jiaduo";
        String DartifactId ="Order";
        String Dversion ="1.0-SNAPSHOT";
        String targetDir ="/user/workspace";


        MavenCli cli = new MavenCli();
        System.setProperty("maven.multiModuleProjectDirectory","/user");
        int r = cli.doMain(new String[]{"archetype:generate",
                "-DgroupId="+DgroupId,
                "-DartifactId="+DartifactId,
                "-Dversion="+Dversion,


                "-DarchetypeGroupId=com.template",
                "-DarchetypeArtifactId=project-template-archetype",
                "-DarchetypeVersion=1.0-SNAPSHOT",
                "-DinteractiveMode=false"}, targetDir, System.out, System.out);


        System.out.println(r);
        if (r !=0){
            throw new RuntimeException("生成工程结构失败");
        }else{
            System.out.println("生成工程结构成功");
        }
    }


}
相关推荐
缺点内向3 小时前
Java:创建、读取或更新 Excel 文档
java·excel
带刺的坐椅3 小时前
Solon v3.4.7, v3.5.6, v3.6.1 发布(国产优秀应用开发框架)
java·spring·solon
四谎真好看5 小时前
Java 黑马程序员学习笔记(进阶篇18)
java·笔记·学习·学习笔记
桦说编程5 小时前
深入解析CompletableFuture源码实现(2)———双源输入
java·后端·源码
java_t_t5 小时前
ZIP工具类
java·zip
lang201509285 小时前
Spring Boot优雅关闭全解析
java·spring boot·后端
言德斐5 小时前
SQL性能优化的思路及策略
数据库·sql·性能优化
码界奇点5 小时前
Django视图从基础到高级的全面解析
数据库·django·sqlite·web·python3.11
Allan_20256 小时前
数据库学习
数据库·学习
fen_fen6 小时前
人大金仓数据库kingbase8创建表示例
数据库·oracle