Maven 的 archetype 技术,为新建标准化的工程框架提供了方便。为自定义一套工程框架标准,可参考以下步骤操作:

1,创建一个项目的原型

2,在项目根目录执行命令:mvn archetype:create-from-project,新生成的archetype在target/generated-sources/archetype目录

archetype-resources目录下模版工程的资源元文件,这些元文件是生成工程的时候需要用到,该目录下必须要有一个顶级pom文件,子文件夹代表了模块定义。archetype目录下的pom文件是用来定义骨架groupId,artifactid信息的,用于创建应用的时候。

3,进入target/generated-sources/archetype/src/main/resources 目录,手工调整相关archetype源码. 需进行变量替换的文件,需在archetype-metadata.xml中开启filtered="true";将资源中需要订制的地方替换成相应的${groupid},${artifactid},${package},这样maven会在创建项目的过程中自动将这些值传入的相应要替换的地方

比如:

<groupId>${groupId}</groupId>
<artifactId>${artifactId}</artifactId>
<version>${version}</version>

那创建项目的时候回自动替换里面的变量,如果创建的文件名里面有变量,那使用__artifactId__这个格式。

archetype-metadata.xml文件中重要的几个属性如下:

  a.属性变量定义

<requiredProperties>
<requiredProperty key="appName">
<defaultValue>helloworld</defaultValue>
</requiredProperty>
<requiredProperty key="groupId">
<defaultValue>com.helloworld</defaultValue>
</requiredProperty>
<requiredProperty key="artifactId">
<defaultValue>helloworld</defaultValue>
</requiredProperty>
</requiredProperties>

这个不是必填。

b.项目子模块定义

 <module id="${rootArtifactId}-biz" dir="__rootArtifactId__-biz" name="${rootArtifactId}-biz">
</module>

  module有三个属性,解释如下:
    id     :相当于工程的artifactId.
    dir    :相当于工程源文件在archetype-resources里对应的directory.
    name   :模块的名字.

c.项目文件集定义

 <fileSets>
<fileSet encoding="UTF-8">
<directory>assets/css</directory>
<includes>
<include>**/*.css</include>
</includes>
</fileSet>
</fileSets>

4,在..\target\generated-sources\archetype下有个pom.xml文件,编辑里面的

<groupId>com.***.***.archetype</groupId>
<artifactId>***-archetype</artifactId>
<version>*.*</version>

这样可以发布到自己想要的位置,如果不修改那就放入默认的位置。

5,在archetype根(..\target\generated-sources\archetype)目录执行:mvn clean install,将该archetype传到本地的maven仓库

6,通过mvn archetype:generate -DarchetypeGroupId=***.archetype -DarchetypeArtifactId=***-archetype -DarchetypeVersion=**就可以创建项目了。

maven自定义骨架的更多相关文章

  1. MAVEN 自定义骨架

    1)根据原由的骨架先创建出一个骨架模板,例如创建一个web框架可以先通过命令 mvn archetype:generate -DarchetypeCatalog=internal  创建出一个web的 ...

  2. Linux使用IDEA配置maven的web项目骨架archetype(模板) 自定义骨架

    说明:本文说的骨架就是 archetype,也可以理解为模板,总是就是指你创建项目时的基本配置. 前言:在使用IDEA创建maven的web项目时,一般都是直接使用提供的默认web项目,如图 然而创建 ...

  3. 【Maven实战技巧】「插件使用专题」Maven-Archetype插件创建自定义maven项目骨架

    技术推荐 自定义Archetype Maven骨架/以当前项目为模板创建maven骨架,可以参考http://maven.apache.org/archetype/maven-archetype-pl ...

  4. Spring框架学习笔记(4)——SSM整合以及创建Maven自定义模版

    Spring+Spring MVC+MyBatis+Maven SSM整合的核心还是Spring+MyBatis的整合,回顾一下MyBatis操作数据库流程,我们是使用一个SQLSessionFact ...

  5. idea中配置maven的骨架本地下载方式

    由于我们使用maven的骨架创建的时候,maven需要联网进行骨架的下载,如果断网了,则骨架不能正常下载,为了防止这种情况,我们可以配置本地下载,当已经联网下载过一次后,以后每次进行下载都会从本地下载 ...

  6. Maven自定义Archetype

    Maven提供了archetype帮助我们快速构建项目骨架,很便捷.但是,中央仓库中的archetype版本过于陈旧,构建好项目后,需要修改很多信息,甚是麻烦,那么如何自定义个archetype就显得 ...

  7. Maven 自定义 archetype

    最近在公司经常要写一些 storm-job 工程的骨架(archetype)非常相似,为了能够将大家的工程结构固定下来以及节约建工程的成本,所以给组内自定义了maven-archetype,中途遇到了 ...

  8. maven自定义脚手架(快速生成项目)

    Maven之自定义archetype生成项目骨架 利用脚手架生成 新项目 命令行方式 mvn archetype:generate \ -DarchetypeGroupId=com.xxx \ -Da ...

  9. Maven自定义Archetype(zz)

    原文地址:http://www.cnblogs.com/javalouvre/p/5858162.html Maven提供了archetype帮助我们快速构建项目骨架,很便捷.但是,中央仓库中的arc ...

随机推荐

  1. Ruby on Rails (ROR)类书籍

    Ruby on Rails (ROR)类书籍下载地址及其他(整理) Ruby on Rails 如此之热,忍不住也去看了看热闹,现在把一些相关的电子图书下载地址整理下,方便有兴趣的朋友. 2006-0 ...

  2. div高度自适外层div高度随里层div高度自适

    尝试过许多办法 其中一网友的最靠谱就是在外层div样式添加两个标签(不能少) clear:both;  overflow:auto;

  3. requirejs的config及optimizer r.js配置

    1.怎么处理require.js这些不需要被合并的东西 所有appDir中的文件都会先copy到dir文件中,进行压缩,然后根据build.js中的配置进行相应的合并,包括img等:2.样式合并后原来 ...

  4. 13个不可不知的ASP.NET MVC扩展点

    13个不可不知的ASP.NET MVC扩展点 ASP.NET MVC设计的主要原则之一是可扩展性.处理管线(processing pipeline)上的所有(或大多数)东西都是可替换的.因此,如果您不 ...

  5. 测试驱动 ASP.NET MVC Type Aliase

    Type Aliase 去掉Scala的糖衣(4) -- Type Aliase 我的新博客地址:http://cuipengfei.me/blog/2013/12/23/desugar-scala- ...

  6. c#通用多线程基类,以队列形式

    c#通用多线程基类,以队列形式 个人原创.欢迎转载.转载请注明出处.http://www.cnblogs.com/zetee/p/3487084.html 多线程这个概念大家都很熟悉,对于winfor ...

  7. 算法打基础——HashTable

    这一节主要讲很多方面非常重要的hash table等问题. 由于平时很少用到这些,基本都忘了... 怎样快速的在内存中插入.删除.和搜索呢? 这就需要哈希表了 这一节主要知识点是:1 简单的映射表和处 ...

  8. C#的匿名委托 和 Java的匿名局部内部类

    .NET:C#的匿名委托 和 Java的匿名局部内部类 目录 背景实验备注 背景返回目录 这几天重温Java,发现Java在嵌套类型这里提供的特性比较多,结合自身对C#中匿名委托的理解,我大胆的做了一 ...

  9. 记录最近在使用sprintf构造字符串时遇到的一个问题

    直接上代码: #include "stdio.h" #include "string.h" int main() { char szTmp[20] = {0}; ...

  10. java版微信公众平台自定义菜单创建代码实现

    微信公众平台自定义菜单创建代码实现—java版 搞了两天的自定义菜单,终于搞定了,现在分享下心得,以便后来者少走弯路...... 好了,先看先微信官方的API 官方写的很详细,但是我看完后很茫然,不知 ...