相关链接:

一、事实上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. HDU 3315 My Brute(费用流)

    职务地址:HDU 3315 这个题的思路全然是自己想出来的,自我感觉挺巧妙的. . .(大牛勿喷.. . )对大胆建图又多了一份信心. 详细思路是构造一个二分图,Si连源点.Xi连汇点,流量都是1,费 ...

  2. 使用 DBMS_REPAIR 修复坏块

    对于Oracle数据块物理损坏的情形,在我们有备份的情况下可以直接使用备份来恢复.对于通过备份恢复,Oracel为我们提供了很多种方式,冷备,基于用户管理方式,RMAN方式等等.对于这几种方式我们需要 ...

  3. HUNNU11352:Digit Solitaire

    Problem description Despite the glorious fall colors in the midwest, there is a great deal of time t ...

  4. cocos2d-x 音乐/音效设置

    cocos2d-x 游戏中声音 有两种 一种是背景音乐一种是音效 载入音乐 或者音效的时候 我们须要先缓存声音 #include "SimpleAudioEngine.h" usi ...

  5. Activity详细解释(生命周期、以各种方式启动Activity、状态保存,等完全退出)

    一.什么是Activity? 简单的说:Activity或者悬浮于其它窗体上的交互界面. 在一个应用程序中通常由多个Activity构成.都会在Manifest.xml中指定一个主的Activity, ...

  6. Linux/Unix使用valgrind内存泄漏检测

    c\c++程序设计.内存管理是一个比较头疼的问题.相信它会导致内存泄漏.除了外部养成良好的编程习惯(使用智能指针),使用该工具还可以帮助检测内存泄漏,valgrind这是Unix\Linux在一个很好 ...

  7. Yii 控制dropdownlist / select 控件的宽度和 option 的宽度

    默认情况下, option的宽度会由options中最宽的元素决定,并且同时决定着select控件的宽度 在Yii中,如果需要自定义select控件的宽度,可以用 htmlOptions定义,如下: ...

  8. hibernate 批量处理数据

    批量处理数据是指处理大量数据的一个单独的事务. 在应用层批处理操作, 主要有以下方式: 通过 Session 通过 HQL 通过 StatelessSession 通过 JDBC API(仅仅要会用这 ...

  9. 【小白的java成长系列】——顶级类Object源代码分析

    首先来说一下api文档使用,api这个词对有一定开发经验的java编程人员来说是非常喜爱的~ java当然也提供了api开发文档,下载地址:http://www.oracle.com/technetw ...

  10. Blend4精选案例图解教程(一):丰富的形状(Shape)资源

    原文:Blend4精选案例图解教程(一):丰富的形状(Shape)资源 Blend4资源面板中内置了丰富的形状素材,为我们在构建程序时提供极大的方便.系统默认内置18种常用形状,通过其属性设置可以自定 ...