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 回车即可生成新的项目。
座右铭:不要因为知识简单就忽略,不积跬步无以至千里。
版权声明:自由转载-非商用-非衍生-保持署名。
本作品采用知识共享署名 4.0 国际许可协议进行许可。
----------------------------------------------------------------------