相关链接:

一、事实上Maven的模板也是一个maven项目,所以我们首先要生成一个生成模板的模板项目


1.   随便找一个现成的maven项目
     假设没有运行:mvn archetype:create -DartifactId=archetype-template-generator  -DgroupId=test生成一个
2.   进入1.中的maven项目
     运行:mvn archetype:create-from-project
     好了,target/generated-sources/archetype就是我们要的项目了,把这个目录总体拷贝出来(当然不拷贝也能够。个人还是习惯独立出来)
     那么这个project是怎么创建模板的呢。接着看
3.   首先我们改动下这个project的信息。便于我们安装之后使用
     打开archetype/pom.xml
     <groupId>test</groupId>

<artifactId>archetype-template-generator-archetype</artifactId>

     <version>1.0-SNAPSHOT</version>
     改动这三项
     然后运行:mvn -Dmaven.test.skip=true clean install
     (当然,高级定制功能我们以下再说。先走一遍最简单的流程)
     假设没有错误,那么如今我们的模板已经安装到本机maven仓库了。接着我们来试着使用这个模板创建一个maven项目
4.   运行:mvn archetype:generate -DarchetypeCatalog=local
     不出意外,我们能够看到3.中安装的模板(假设看不到,请运行:mvn archetype:update-local-catalog进行更新,本地archetype存放在:${user.home}/.m2/archetype-catalog.xml中),选择1
     提示输入目标项目的信息。这里我们依据实际情况输入參数。然后确认Y。这么就依据我们自己的模板创建了一个maven项目。这里的archetypeproject我们能够复用

參考链接

二、这一部分我们来定制刚才生成的archetype项目,满足我们生成自己定义结果的项目的需求

1.   定制哪些文件会被作为模板
     仅仅要我们把文件放到src\main\resources\archetype-resources文件夹以下,而且在src\main\resources\META-INF\maven\archetype-metadata.xml中进行配置
     比方:我们加入src\main\resources\archetype-resources\.gitignore,然后在archetype-metadata.xml中加入以下内容:
     <fileSets>

<fileSet encoding="UTF-8" filtered="true">

               <directory></directory>

               <includes>

                    <include>.gitignore</include>

               </includes>

          </fileSet>

     </fileSets>
     又一次mvn -Dmaven.test.skip=true clean install 再次生成项目,就会在新项目中增加.gitignore文件
     其它类似配置,我就不具体解释了
2.   属性替换
     能够在上面的.gitignore增加${pro-to-replace}内容
     而且在archetype-metadata.xml中加入内容:
     <requiredProperties>

          <requiredProperty key="pro-to-replace"/>
     </requiredProperties>
     我们想这个占位符在实际使用的时候进行替换。这时archetype-metadata.xml中filtered="true"必须配置
     这样假设在生成的向导里会提示我们输入pro-to-replace,当然我们也能够在生成的命令行中用-Dpro-to-replace=XXX进行这是,假设设置了,不会提示我们输入指
     我们也能够像这样设置默认值:
     <requiredProperty key="pro-to-replace">

<defaultValue>pro-to-replace</defaultValue>

     </requiredProperty>

     当然假设这样。就不会提示你输入属性值,假设不想使用属性值。仅仅有通过-Dpro-to-replace=XXX进行更改

     
     这么一来,又一次安装,然运行创建的时候设置属性:mvn archetype:generate -DarchetypeCatalog=local -Dpro-to-replace=pro_value
     生成project的.gitignore中的${pro-to-replace}就会被替换为pro_value

     注意:这里的属性名称不能包括.
          比方:pro.to.replace是不行的




     

     

版权声明:本文博客原创文章。博客,未经同意,不得转载。

创建您自己的Maven模板的更多相关文章

  1. maven 学习---使用Maven模板创建项目

    在本教程中,我们将向你展示如何使用mvn archetype:generate从现有的Maven模板列表中生成项目.在Maven 3.3.3,有超过1000+个模板,Maven 团队已经过滤掉一些无用 ...

  2. 使用Maven模板创建项目

    在本教程中,我们将向你展示如何使用mvn archetype:generate从现有的Maven模板列表中生成项目.在Maven 3.3.3,有超过1000+个模板,Maven 团队已经过滤掉一些无用 ...

  3. 手动创建spring项目(maven/IDEA环境)

    1.创建maven项目 按照步骤一步一步来 创建项目 这里选择maven的模板 设置包名 设置项目的maven的配置信息.maven仓库路径(会从maven配置文件中获取) 这里设置项目名.项目保存路 ...

  4. Java如何搭建脚手架(自动生成通用代码),创建自定义的archetype(项目模板)

    .personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...

  5. 在IntelliJ IDEA里创建简单的基于Maven的SpringMVC项目

    后来发现了一种更加方便的创建方式,即第一步不选择Create from archetype,创建完毕后打开Project Structure-Modules,然后添加Web,但是注意添加的Web里面的 ...

  6. 使用 DotNet CLI 创建自定义的 WPF 项目模板

    描述 当我们安装完 DotNetCore 3.0 版本的 SDK 后,我们就可以创建基于 DotNetCore 的 WPF 项目模板,通过如下 CLI 可以方便快捷的创建并运行我们的项目: dotne ...

  7. idea中创建多module的maven工程

    以前自学Java web的时候,我们都是创建一个web工程,该工程下面再创建dao.service.controller等包.自从工作以后,我们会发现现在的web项目包含多个module,contro ...

  8. 创建一个简单的maven的web程序

    最近学习Hadoop,发现学习要想用hadoop作为后台运行web程序,必须应用maven,所以学习了今天学习了一下maven,然后搭建了一个简单的web程序 首先我使用的是eclipse中自带的ma ...

  9. maven这些工具负责创建项目,然后maven负责打包好war包扔进tomcat容器,tomcat容器接受的只是jar包

    maven这些工具负责创建项目,然后maven负责打包好war包扔进tomcat容器,tomcat容器接受的只是jar包 2.tomcat不管你什么编译的,也不管你开发工具是什么.Tomcat只接受w ...

随机推荐

  1. SecureCRT学习之道:SecureCRT 常用技巧

    快捷键: 1. ctrl + a :  移动光标到行首 2. ctrl + e :移动光标到行尾 3. ctrl + d :删除光标之后的一个字符 4. ctrl + w : 删除行首到当前光标所在位 ...

  2. Sqlite 扩展功能 GET_PHONEBOOK_INDEX

    在联系人数据库设计中遇到了这个函数,晚上找了半天没找到答案. GET_PHONEBOOK_INDEX This function will produce a normalized upper cas ...

  3. POJ 2533-Longest Ordered Subsequence(DP)

    Longest Ordered Subsequence Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 34454   Acc ...

  4. HBaseConvetorUtil 实体转换工具

    HBaseConvetorUtil 实体转换工具类 public class HBaseConvetorUtil {        /**    * @Title: convetor    * @De ...

  5. jdk并发包 CopyOnWriteArrayList源代码分析

    CopyOnWriteArrayList是jdk1.5并法包里面用于处理高并发下.读多写少的情况下.减少锁等待的集合类.以下对该类实现做一个简要的分析 1,首先CopyOnWriteArrayList ...

  6. USACO sprime

    /* ID:kevin_s1 PROG:sprime LANG:C++ */ //N = 1仅仅可能为2,3,5,7.N > 1仅仅可能为1,3,7.9. N = i,到N = i + 1递推假 ...

  7. C该程序生成一个唯一的序列号

    在实际的软件开发项目,通常,它包括产生一唯一的序列号.在本文中,一个切实可行的方案,例如,它引入了一个唯一的序列号生成过程. 本文生成的序列号的样式为:MMDDHHMINSS_XXXXXX. 程序例如 ...

  8. 生活中的大数据 hadoop

    大数据和我有关吗?大数据就是大量的数据吗?只有互联网公司才有大数据吗?想盘活大数据必须买昂贵的软硬件吗?大数据怎么存储计算?大数据,这个时下最火热的互联网词语,你了解多少呢?

  9. ZOJ - 3822 Domination (DP)

    Edward is the headmaster of Marjar University. He is enthusiastic about chess and often plays chess ...

  10. 深入解析_Android的自定义布局

    前言: 这篇文章是前Firefox Android工程师(现在跳槽去Facebook了) Lucas Rocha所写,文中对Android中常用的四种自定义布局方案进行了很好地分析,并结合这四种And ...