相关链接:

一、事实上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. 【Cloud Foundry】Could Foundry学习(三)——Router

    在阅读的过程中有不论什么问题.欢迎一起交流 邮箱:1494713801@qq.com    QQ:1494713801 一.概述 Router组件在Cloud Foundry中是对全部进来的Reque ...

  2. 飘逸的python - __new__、__init__、__call__傻傻分不清

    __new__: 对象的创建,是一个静态方法.第一个參数是cls.(想想也是,不可能是self,对象还没创建,哪来的self) __init__ : 对象的初始化, 是一个实例方法,第一个參数是sel ...

  3. poj1236 有向图加边变成强连通图

    给我们一个有向图,有两个问题 1.最少要给多少个点发消息,才能使得所有的点都收到消息(消息可以随边传递) 2.最少需要多少条边才能使得图变成强连通图 对于一个强连通分量,可以当做一个点来考虑,所以我们 ...

  4. HTTP代理与SPDY协议(转)

    原文出处: fqrouter HTTP代理是最经典最常见的代理协议.其用途非常广泛,普遍见于公司内网环境,一般员工都需要给浏览器配置一个HTTP代理才能访问互联网.起初,HTTP代理也用来翻越“功夫网 ...

  5. profile与bashrc

    /etc/profile./etc/bashrc 是系统全局环境变量设定 ~/.profile,~/.bashrc用户家文件夹下的私有环境变量设定 当登入系统时候获得一个shell进程时.其读取环境设 ...

  6. Android_declare-styleable_自己定义控件的属性

    1.简单实例 (1).在res/values文件下定义一个attrs.xml文件 <? xml version="1.0" encoding="utf-8" ...

  7. 依法使用Linux,反对Linux国产化

    10月28日.中国操作系统应用推广大会在京举行,包含中央办公厅.公安部.工信部在内的多个中央国家机关部委出席该会.此次推广大会的召开或标志着操作系统国产化进程的进一步推进. 会上.中国project院 ...

  8. php:修改NetBeans默认字体

    在Netbeans中由于使用了Swing进行开发,所以其中界面的字体也是由Java虚拟机进行配置而不是随操作系统的.在安装完Netbeans后默认的字体大小是11px.而在Windows下的宋体最小支 ...

  9. IIS6,IIS7中查看w3wp进程

    当我们服务器创建了很多应用程序池,然后某个w3wp.exe进程占用CPU和内存过高,我们怎么查找这个w3wp.exe进程属于哪一个网站呢.其实微软为我们提供了很好的查看工具: 首先打开windows任 ...

  10. (转)FFMPEG解码流程

    http://www.douban.com/note/228831821/ FFMPEG解码流程:     1. 注册所有容器格式和CODEC: av_register_all()     2. 打开 ...