概述

使用maven创建项目时,提供的基础的工程太简单不是想要的,并且创建过程很慢,使用起来体验不好。如果可以根据自己的需要,直接创建模板,然后进行类似项目拷贝的工作,那就完美。幸运的是,maven提供了这样的插件,一下就是操作步骤。

步骤

 

1.制作模板项目my-app

此步骤只需要创建好一个想要作为模板的工程即可;

2.由模板项目创建模板并安装到本地

进入上一步的模板项目目录my-app,执行命令:

mvn archetype:create-from-project

好了,target/generated-sources/archetype就是我们要的项目了,把这个文件夹整体拷贝出来,稍微调整archetype目录的内容,比如把一些不必要的工程信息等删除。

修改pom.xml文件的groupId,artifactId,version为你想要的,然后安装到本地:

mvn clean install –DskipTests

3.使用本地模板创建工程

mvn archetype:generate -DarchetypeCatalog=local

选择刚刚创建的模板,几乎瞬间就完成了工程的创建;

 

One more

 

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进行更改。

摘自:http://www.tuicool.com/articles/riuiUv

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

  1. 创建您自己的Maven模板

    相关链接: http://maven.apache.org/archetype/maven-archetype-plugin/ 一.事实上Maven的模板也是一个maven项目,所以我们首先要生成一个 ...

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

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

  3. 使用Maven模板创建项目

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

  4. eclipse创建多模块maven工程小结

    创建maven工程步骤 1 新建一个maven工程,如下图所示: 2 选择项目名称(或项目目录),如下图所示: 3 填写maven工程相关信息,注意父maven工程的packing方式是pom,如下图 ...

  5. 创建多模块maven项目

    有两种方式: 1,new -->maven project-->maven-archetype-quickstart 建完多个独立的project后,手动修改pom文件的packing类型 ...

  6. IDEA创建完整目录maven项目

    鉴于第三次利用idea建立完整目录maven项目时仍要反反复复地问度娘,特此记录 1.第一步,进行project-> 勾选Create from archetype,搜索maven.archet ...

  7. 创建PCB原理图的模板

    Q:创建PCB原理图的模板,主要就是设置模板的大小,右下角的信息框, 效果图如下: 创建PCB工程 创建原理图 设置模板,方便以后画原理图 打开模板的方式有:1按DO 2双击边框 标题块是附带有的,取 ...

  8. eclipse中创建多模块maven web项目

    本文讲述在eclipse中创建分模块maven web项目. 暂时将一个项目分为controller:service:dao以及父类模块四部分. 1.创建父类模块. 创建一个简单的maven proj ...

  9. 创建第一个Maven项目

    -----------------------siwuxie095                                     创建第一个 Maven 项目         1.打开 Ec ...

随机推荐

  1. logstash5生成init脚本后台启动

    默认情况使用rpm包安装完logstash之后没有启动脚本,这一点我觉得算是开发不够彻底.官网给了一个脚本,需要根据不同的系统版本生成对应的启动脚本,而且官网没有给明使用方法,对于新用户来说算是个坑, ...

  2. Android Studio aidl文件路径自定义问题

    1.aidl旧文件夹中添加的内容无法编译 sourceSets中主要是把把src/main/aidl文件也作为java.srcDirs, resources.srcDirs,这样当编译程序时,AIDL ...

  3. 解题:USACO14MAR Sabotage

    题面 题外话:我的实数二分有什么问题=.= 仍然(我为什么要这么说)是二分答案,如何检查呢?将所有的数减去二分出来的$mid$后求和得到和$sum$,然后如果在减出来的数列中能找出一段大于$sum$的 ...

  4. MySQL 第七篇:视图、触发器、事务、存储过程、函数

    一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的 ...

  5. faster rcnn算法及源码及论文解析相关博客

    1. 通过代码理解faster-RCNN中的RPN http://blog.csdn.net/happyflyy/article/details/54917514 2. faster rcnn详解 R ...

  6. Linux各种重要配置文件详解

    1:网卡文件/etc/sysconfig/network-scripts/ifcfg-eth0 [root@Gin scripts]# cat /etc/sysconfig/network-scrip ...

  7. 使用spring boot访问mongodb数据库

    一. spring boot中传参的方法 1.自动化配置 spring Boot 对于开发人员最大的好处在于可以对 Spring 应用进行自动配置.Spring Boot 会根据应用中声明的第三方依赖 ...

  8. bzoj千题计划146:bzoj3295: [Cqoi2011]动态逆序对

    http://www.lydsy.com/JudgeOnline/problem.php?id=3295 正着删除看做倒着添加 对答案有贡献的数对满足以下3个条件: 出现时间:i<=j 权值大小 ...

  9. 五、Kafka 用户日志上报实时统计之 应用概述

    一.kafka 回顾 1.简介 Kafka 的业务 业务场景: 解除耦合 增加冗余 提高可扩展性 Buffering 异步通信 2.介绍 Kafka 的应用场景 Push Message Websit ...

  10. Backbone基础笔记

    之前做一个iPad的金融项目的时候有用到Backbone,不过当时去的时候项目已经进入UAT测试阶段了,就只是改了改Bug,对Backbone框架算不上深入了解,但要说我一点都不熟悉那倒也不是,我不太 ...