基于已有项目,快速创建项目模板

mvn Archetype的妙用

背景

在开发过程中,尤其是使用Maven作为包管理工具时,在创建新模块时,总会有些头疼。

常见场景

从网上下载下来的开源项目(或者公司的大型项目),需要新建一个模块或系统,而这个开源项目,可能层次非常多。这时手动创建就很有可能产生错误。而Maven依赖等错误,有时候会非常隐蔽,不容易发现。

一.选定原始模型

这里以一个demo为例。此demo层层嵌套(阿里Cola4.0的demo)。如果创建一个新的领域模块,要创建6个模块,这是非常危险的,也是非常枯燥的。

idea创建模块java不会亮_快速创建项目模板

二.构建原始模型

1.选择需要创建的模板

如demo中,我们就直接以整个demo为原始模型进行创建,这样,以后就可也直接拿着这个架构结构,创建项目了。

2.生成原始模型

进入demo父工程的pom.xml目录下(demo-web-parent ),执行(无需修改)

mvn archetype:create-from-project

idea创建模块java不会亮_Archetype_02

3.发送原始模型到本地仓库

上面刚刚生成的原始模型,还需要发送到本地Maven仓库,才可使用。
进入生成好的target\generated-sources\archetype目录,执行

mvn clean install

idea创建模块java不会亮_快速创建项目模板_03

4.检查是否推送成功

打开Maven的依赖目录~\.m2\repository,可以看到文件archetype-catalog.xml 看到如下类似记录,说明已经创建好了。

<?xml version="1.0" encoding="UTF-8"?>
<archetype-catalog xsi:schemaLocation="http:///plugins/maven-archetype-plugin/archetype-catalog/1.0.0 http:///xsd/archetype-catalog-1.0.0.xsd"
    xmlns="http:///plugins/maven-archetype-plugin/archetype-catalog/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <archetypes>
    <archetype>
      <groupId>com.alibaba.cola.demo.web</groupId>
      <artifactId>demo-web-parent-archetype</artifactId>
      <version>1.0.0-SNAPSHOT</version>
      <description>demo-web-parent-archetype</description>
    </archetype>
  </archetypes>
</archetype-catalog>

三.使用原始模型创建新项目\模块

1.使用IDEA创建

  1. File->New->Project/Module,看到如下界面,输入刚刚archetype-catalog.xml文件中看到的三维坐标。第四项,可不填。
  2. 按照实际填写即可。
  3. 第三步,毕竟比较重要,有很多可选项,当然,也可以不填。

key

实例

说明

groupId

com.tianjingle.wang

新建项目的工程名

artifactId

demotianjingle

要创建的项目名称

version

1.0.0-SNAPSHOT

要创建的项目的版本号

package

com.tianjingle.wang

要创建的项目的基础包名

archetypeGroupId

com.example

./m2下的xml里的

archetypeArtifactId

demo-archetype

./m2下的xml里的

archetypeVersion

0.0.1-SNAPSHOT

./m2下的xml里的

archetypeCatalog

local

从本地仓库选取模板

interactiveMode

false

idea创建模块java不会亮_maven_04

2.使用mvn命令创建

字段说明,如上面表格

mvn archetype:generate -DgroupId=ltzDemo -DartifactId=com.ltz -Dversion=1.0.0-SNAPSHOT -Dpackage=com.ltz.demo -DarchetypeGroupId=com.alibaba.cola.demo.web -DarchetypeArtifactId=demo-web-parent-archetype -DarchetypeVersion=1.0.0-SNAPSHOT -B -DarchetypeCatalog=local -DinteractiveMode=false

四.创建成功

idea创建模块java不会亮_项目模板_05