maven-archetype(脚手架)快速创建

maven-archetype我们通常称它为脚手架,用于项目初期快速生成项目结构,统一项目框架。maven自带多种脚手架,通常对于团队而言,很难满足需求,需要自定义一些适合自己团队的脚手架。

使用自带脚手架创建项目

mvn archetype:generate -DarchetypeCatalog=local 用于展示本地local已有的maven脚手架。
在结果中选择archetype的序号,本范例中为:1,然后按照系统提示逐步输入groupId、artifactId、version、package四个必需的属性,
其中version、package系统会智能给出一个默认值,回车确认后系统就会生成新的maven项目了

也可以直接在IDEA中选择相应archetype用于初始化项目
在这里插入图片描述
该部分不展开讲解,可以自己动手试试。

自定义脚手架

脚手架也叫工程模板,用于创建一个或多个默认的工程并为每个工程填充好默认的一些文件和配置。同时要抽象出生成的工程需要的一些属性,做到这些属性可动态配置。在maven里通过定制的archetype来生成脚手架。maven本身内置了很多archetype 工程模板。

删除IDEA添加的脚手架

进入目录
C:\Users\xxx.IntelliJIdea2018.1\system\Maven\Indices
找到UserArchetypes.xml文件修改其内容即可,可通过删除标签,不会马上生效需要重启IDEA

自定义脚手架

自定义脚手架最快的方式即从一个项目中生成脚手架
创建一个脚手架流程图如下所示:
archetype
创建任一个maven项目,编辑好项目的初始结构,比如定义好model、controller层次目录,使用已下maven命令即可将当前项目创建出脚手架:

mvn archetype:create-from-project

到项目目录下,执行该命令后将会生成该项目的一个脚手架。
在项目target/generated-sources下会看到如下目录,该文件夹下就是我们从项目中生成的脚手架项目:
generated-resource

进入到archetype目录,将生成的脚手架发布到本地仓库,使用以下maven命令:

mvn install

mvn install
在仓库中将看到对应的包信息,注意该目录下jar包的存在性,以免install失败。
archetypedemo-archetype

IDEA添加自定义脚手架
IDEA添加自定义脚手架
如果你的脚手架包在远程仓库,也可以如下配置
脚手架包在远程仓库
设置Repository的地址为脚手架所在位置
比如:http://nexus.xxx.com/service/rest/repository/browse/maven-public/com/test/archetype/archetypedemo-archetype/

添加成功后,可以再目录中看到所添加的脚手架。
在这里插入图片描述
此时选择该自定义脚手架所生成的项目就是与我们之前所定义的一样。
注意:空目录,会被忽略掉

这种方式简单实用,有些复杂场景还需要借助原生编写脚手架方式

一个脚手架项目

将生成的脚手架项目用IDEA引入,可以看到以下目录结构
archetype目录结构

  • 所有的项目脚手架内容都集中在src/main/resources/archetype-resources文件夹下,其中包括需要生成的pom.xml文件,java文件,配置文件等等待生成项目中相应的内容;
  • 项目中根目录下的pom.xml属于该脚手架项目的pom,不要与archetype-resources下面的内容pom混淆;
  • archetype-metadata.xml用于定义脚手架的资源描述,如过滤或者包含某些内容。

脚手架项目中的pom.xml核心内容

<build>
    <extensions>
        <extension>
            <groupId>org.apache.maven.archetype</groupId>
            <artifactId>archetype-packaging</artifactId>
            <version>3.1.1</version>
        </extension>
    </extensions>
    <pluginManagement>
        <plugins>
            <plugin>
                <artifactId>maven-archetype-plugin</artifactId>
                <version>3.1.1</version>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

pom文件基本上与我们平常项目中的pom无过多差别,主要在于一些依赖和插件的区别。这里需要archetype-packaging以及maven-archetype-plugin

注意:使用该插件需要jdk1.7+

archetype-resources下的模板内容定义
需要注意的是#set的声明,该目录下面的内容无论是java文件还是配置文件都需要在头部加上如下内容,主要用于标记处理

#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )

archetype-metadata.xml
archetype-metadata.xml该文件是一个非常重要的配置文件,包括了由该脚手架所生成的项目结构有哪些,以及一些过滤处理等等,实例如下所示

<?xml version="1.0" encoding="UTF-8"?>
<archetype-descriptor xsi:schemaLocation="https://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.1.0 http://maven.apache.org/xsd/archetype-descriptor-1.1.0.xsd" name="archetypetype"
    xmlns="https://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <fileSets>
    <fileSet filtered="true" packaged="true" encoding="UTF-8">
      <directory>src/main/java</directory>
      <includes>
        <include>**/*.java</include>
      </includes>
    </fileSet>
    <fileSet filtered="true" encoding="UTF-8">
      <directory>src/main/resources</directory>
      <includes>
        <include>**/*.properties</include>
      </includes>
    </fileSet>
      ......
    <fileSet encoding="UTF-8">
      <directory></directory>
      <includes>
        <include>.gitignore</include>
      </includes>
    </fileSet>
  </fileSets>
</archetype-descriptor>

packaged="true"标识对应的内容要放入到package中,比如package为com.test,那么如果该属性为true,则对应的java文件会放到com/test文件夹下,也就是包路径下。
filtered="true"标识 是否需要占位符${}的处理如package ${package}

关于占位符的配置可参加archetype.properties文件

#Fri Jul 12 10:38:23 GMT+08:00 2019
package=it.pkg
version=0.1-SNAPSHOT
groupId=archetype.it
artifactId=basic

更多Archetype(脚手架)内容可参考maven官网:http://maven.apache.org/archetype/index.html

如有不对之处或补充内容欢迎指出。

如果您喜欢互联网资讯,欢迎访问新事物: www.v2tn.com

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值