概述

使用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. android studio gradle dependencies 包存放在哪儿?

    在AndroidStudio中的"External Libraries"下有引用的library的列表, 选择某个library右键->"Library Prope ...

  2. supervisor 添加新配置不生效的问题

    supervisorctl reread supervisorctl reload (不运行这一步会导致启动不了) supervisorctl start xxx:* 提示:No config upd ...

  3. Kubernetes集群部署--kubernetes1.10.1

    参考博客:https://mritd.me/2018/04/19/set-up-kubernetes-1.10.1-cluster-by-hyperkube/ 一.环境 (1)系统环境 IP 操作系统 ...

  4. P2243 电路维修

    P2243 电路维修 题目背景 Elf 是来自Gliese 星球的少女,由于偶然的原因漂流到了地球上.在她无依无靠的时候,善良的运输队员Mark 和James 收留了她.Elf 很感谢Mark和Jam ...

  5. 类python中高级用法

    1. __call__用法 class Foo: def __init__(self): print('init') def __call__(self, *args, **kwargs): prin ...

  6. Oracle的基本语法,存储函数及触发器

    1.PL/SQL    PL/SQL是Oracle对 ql语言的过程化扩展,指在 SQL 命令语言中增加了过程处理语句,使SQL语言具有过程处理能力.把 SQL 语言的数据操纵能  力与过程语言的数据 ...

  7. 批量更新demo

    因为批量更新数据库的时候,如果数据量太多,就会报错,这时候可以通过逻辑,批量更新,demo如下 @Test public void testbatch() { /** * 批量的值 */ int ma ...

  8. Windows Azure: Service Bus Relay

    Service Host: using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

  9. 20155226 2016-2017-2 《Java程序设计》第5周学习总结

    20155226 2016-2017-2 <Java程序设计>第5周学习总结 教材学习内容总结 语法与继承构架 我们之前接触到的C通常都是将程序流程和错误处理混在一起,在编写程序的时候必须 ...

  10. 小程序web-view wx.miniProgram.postMessage 坑记录

    web-view吧,其实微信官方应该是非常不支持在小程序上嵌套web的,它希望你直接用小程序上的代码,而放弃web的实现,当然,也是为了防止用小程序去嵌套别的广告页面.所以官方对web-view的操作 ...