蜗牛大师

吴庆龙的学习笔记

导航

maven自定义archetype

使用 Maven 时间长了,就会发现原生的一些 archetype 不太适合了,因为如果要新建一个 Spring 项目,你会在项目中加入大量的东西,比如加入依赖的包、写 JavaConfig 的 Spring 配置文件、写 log4j2 的配置文件等等。

这时我们可以自定义 Maven 项目 archetype(叫原型或模板)。

建立 Maven 项目原型非常简单,只需要一个 Maven 插件(maven-archetype-plugin)即可。

1-建立Maven项目

进行一些自定义的配置。我要建立一个 Spring 项目,所以加入了一些 Spring 的配置。

如:

  • 配置 pom.xml 文件
  • 配置好 log4j2.xml 文件
  • 配置好 Spring 的 JavaConfig

2-加入maven-archetype-plugin插件

在 pom.xml 中加入插件。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-archetype-plugin</artifactId>
    <version>3.1.2</version>
</plugin>

3-生成原型项目

在项目目录(~/IdeaProjects/archetype/spring)下面执行 mvn archetype:create-from-project

会看到这么一个结果:

[INFO] Archetype project created in /Users/wu/IdeaProjects/archetype/spring/target/generated-sources/archetype
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  3.238 s
[INFO] Finished at: 2019-11-27T10:25:38+08:00
[INFO] ------------------------------------------------------------------------

原型项目被创建到 /Users/wu/IdeaProjects/archetype/spring/target/generated-sources/archetype 目录下面了,随后进入该目录。

[wu@mac] archetype-spring cd /Users/wu/IdeaProjects/archetype/spring/target/generated-sources/archetype
[wu@mac] archetype pwd
/Users/wu/IdeaProjects/archetype/spring/target/generated-sources/archetype
[wu@mac] archetype ls
pom.xml src     target

4-安装原型项目

在第三步进入目录后,在原型项目的目录下执行 mvn install 安装到本地。

结果:

[INFO] --- maven-install-plugin:3.0.0-M1:install (default-install) @ spring-archetype ---
[INFO] Installing /Users/wu/IdeaProjects/archetype/spring/target/generated-sources/archetype/target/spring-archetype-1.0-SNAPSHOT.jar to /Users/wu/.m2/repository/com/snailwu/archetype/spring-archetype/1.0-SNAPSHOT/spring-archetype-1.0-SNAPSHOT.jar
[INFO] Installing /Users/wu/IdeaProjects/archetype/spring/target/generated-sources/archetype/pom.xml to /Users/wu/.m2/repository/com/snailwu/archetype/spring-archetype/1.0-SNAPSHOT/spring-archetype-1.0-SNAPSHOT.pom
[INFO] 
[INFO] --- maven-archetype-plugin:3.1.2:update-local-catalog (default-update-local-catalog) @ spring-archetype ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.032 s
[INFO] Finished at: 2019-11-27T10:40:09+08:00
[INFO] ------------------------------------------------------------------------

发现最后会执行 maven-archetype-plugin:3.1.2:update-local-catalog 插件,这是更新本地的 .m2/repository/archetype-catalog.xml 文件,查看文件中的内容会发现我们刚才生成的原型项目会显示在这里。如果没有的话执行 mvn archetype:crawl 命令就会扫描本地所有的原型项目,更新到 .m2/repository/archetype-catalog.xml 文件中。

5-使用新的原型生成项目

执行 mvn archetype:generate -DarchetypeCatalog=local 新建项目。

然后选择项目原型:

[INFO] --- maven-archetype-plugin:3.1.2:generate (default-cli) @ standalone-pom ---
[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.maven.archetypes:maven-archetype-webapp (webapp)
2: local -> com.snailwu.archetype:spring-archetype (spring-archetype)
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): : 2

第二个就是我们刚才生成的原型项目,输入 2 回车即可生成新的项目。

posted on 2019-11-27 10:51  蜗牛大师  阅读(1054)  评论(0编辑  收藏  举报