创建一个自定义的Archetype

用默认的archetype太烦了,每次都要改很多东西,不如自己创建一个。

为什么要自己定义archetype

当然是因为懒。我一般是用maven-archetype-quickstart创建项目,但每次创建完之后还要改一通,比如JDK版本号、maven插件等等,这些东西本身其实不应该花太多时间去记的。所以自己定义一个就好了。

定义archetype的步骤

生成模板

  1. maven-archetype-quickstart创建一个正常的maven项目

这个maven项目是什么不重要,重要的是它会帮你生成一个标准的pom.xml文件。

  1. 修改pom.xml文件

比如你几乎所有的项目都需要依赖log4j2这套日志套件,那么你就需要这两个依赖

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<dependencies>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.14.0</version>
  </dependency>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.14.0</version>
  </dependency>
</dependencies>

那么你就可以在这个生成的pom.xml文件中加上这两个依赖。

  1. 执行mvn archetype:create-from-project

这会在target目录中生成一个新的maven项目,进入这个项目,执行mvn clean install,你就把新创建的archetype安装到本地了。

  1. 使用新创建的模板

执行mvn archetype:generate -DarchetypeCatalog=local,会产生一个交互

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
➜  my-project mvn archetype:generate -DarchetypeCatalog=local
[INFO] Scanning for projects...
[INFO]
[INFO] ---------------------< fun.happyhacker:my-project >---------------------
[INFO] Building my-project 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] >>> maven-archetype-plugin:3.1.2:generate (default-cli) > generate-sources @ my-project >>>
[INFO]
[INFO] <<< maven-archetype-plugin:3.1.2:generate (default-cli) < generate-sources @ my-project <<<
[INFO]
[INFO]
[INFO] --- maven-archetype-plugin:3.1.2:generate (default-cli) @ my-project ---
[INFO] Generating project in Interactive mode
[INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0)
Choose archetype:
1: local -> org.apache.flink:flink-quickstart-java (flink-quickstart-java)
2: local -> org.apache.maven.archetypes:maven-archetype-quickstart (quickstart)
3: local -> fun.happyhacker:my-quickstart-1.8-archetype (my-quickstart-1.8)
4: local -> fun.happyhacker:archetype-template-archetype (archetype-template)
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 2:

这时就可以在其中找到刚刚创建的archetype了,在这里就是第4个,所以在交互界面填4,就可以继续选择域名和项目名称,生成一个新的maven项目,在生成的项目中你就会发现你刚刚在第2步中添加的两个依赖已经包含在里面了。

同样的道理,也可以在pom.xml中添加相关的maven插件,以使从模板创建的项目更符合平时的需求。

Built with Hugo
Theme Stack designed by Jimmy