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(脚手架)快速创建_第1张图片
该部分不展开讲解,可以自己动手试试。

自定义脚手架

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

删除IDEA添加的脚手架

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

自定义脚手架

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

mvn archetype:create-from-project

到项目目录下,执行该命令后将会生成该项目的一个脚手架。
在项目target/generated-sources下会看到如下目录,该文件夹下就是我们从项目中生成的脚手架项目:
maven-archetype(脚手架)快速创建_第3张图片

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

mvn install

maven-archetype(脚手架)快速创建_第4张图片
在仓库中将看到对应的包信息,注意该目录下jar包的存在性,以免install失败。
maven-archetype(脚手架)快速创建_第5张图片

IDEA添加自定义脚手架
maven-archetype(脚手架)快速创建_第6张图片
如果你的脚手架包在远程仓库,也可以如下配置
maven-archetype(脚手架)快速创建_第7张图片
设置Repository的地址为脚手架所在位置
比如:http://nexus.xxx.com/service/rest/repository/browse/maven-public/com/test/archetype/archetypedemo-archetype/

添加成功后,可以再目录中看到所添加的脚手架。
maven-archetype(脚手架)快速创建_第8张图片
此时选择该自定义脚手架所生成的项目就是与我们之前所定义的一样。
注意:空目录,会被忽略掉

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

一个脚手架项目

将生成的脚手架项目用IDEA引入,可以看到以下目录结构
maven-archetype(脚手架)快速创建_第9张图片

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

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


    
        
            org.apache.maven.archetype
            archetype-packaging
            3.1.1
        
    
    
        
            
                maven-archetype-plugin
                3.1.1
            
        
    

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



  
    
      src/main/java
      
        **/*.java
      
    
    
      src/main/resources
      
        **/*.properties
      
    
      ......
    
      
      
        .gitignore
      
    
  

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

你可能感兴趣的:(Maven)