自定义项目脚手架- Maven Archetypes
在上篇Intellij修改archetype Plugin配置 中我们已经简单介绍了关于archetype的作用。
简单来说maven archetype插件就是创建项目的脚手架,你可以通过命令行或者IDE集成简化项目创建的工作。例如:
- org.apache.maven.archetypes:maven-archetype-quickstart
- org.apache.maven.archetypes:maven-archetype-site
- org.apache.maven.archetypes:maven-archetype-webapp
- 以及spring或者第三方提供了一些archetype plugin。
同时maven archetype插件也是一个简单的maven artifact,它包含了创建项目所需要的所有资源。 主要分为几类原型信息:
- archetype描述文件(src/main/resources/META-INF/maven/archetype.xml),这为archetype 1.0, 包含所有创建项目的文件信息和路径信息。在(archetype 2.0)[http://maven.apache.org/archetype/maven-archetype-plugin/]增加了更灵活的archetype-metadata.xml(src/main/resources/META-INF/maven/下), archetype元数据信息,并且完全支持1.0.
- 项目的原型文件(src/main/resources/archetype-resources/之下),将会被archetype插件 copy到项目目录结构去。
- 创建项目的pom文件(src/main/resources/archetype-resources下)
- archetype pom文件,在archetype项目根目录下。
创建archetype插件
首先在archetype中加入一个pom文件,如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.github.greengerong</groupId>
<artifactId>component</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging> <name>component</name>
<url>http://maven.apache.org</url> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> <dependencies>
</dependencies>
</project>创建archetype-metadata.xml,位于src/main/resources/META-INF/maven/目录下,例如:
<?xml version="1.0" encoding="UTF-8"?>
<archetype-descriptor name="app-server">
<fileSets>
<fileSet filtered="true" encoding="UTF-8">
<directory>src/main/java</directory>
<includes>
<include>**/*.**</include>
</includes>
</fileSet>
<fileSet filtered="true" encoding="UTF-8">
<directory>src/test/java</directory>
<includes>
<include>**/*.**</include>
</includes>
</fileSet>
</fileSets>
</archetype-descriptor>
更多配置信息参考archetype-descriptor.
为将创建的项目增加pom.xml文件,以${artifactId} / ${groupId} 变量作为占位符,例如:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>${groupId}</groupId>
<artifactId>${artifactId}</artifactId>
<version>${version}</version>
<packaging>jar</packaging> <name>${artifactId}</name> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies> <build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>接下来在archetype项目下install plugin:mvn clean install.
利用已有acrchetype plugin创建项目:
命令行:
mvn archetype:generate -DarchetypeGroupId=<archetype-groupId> -DarchetypeArtifactId=<archetype-artifactId> -DarchetypeVersion=<archetype-version> -DgroupId=<my.groupid> -DartifactId=<my-artifactId>
Intellij选择增加archetype plugin:

对于删除intellij 测试 archetype信息,请参见Intellij修改archetype Plugin配置.
注意:
- 如果你也需要文件或者目录名字以artifactId生成,则需要用特殊变量__artifactId__(双下划线)作为占位符。
本文demo,请移到到github maven-archetypes-demo.
自定义项目脚手架- Maven Archetypes的更多相关文章
- 使用mavan构建自定义项目脚手架
首先抛出一个问题是为什么要构建自定义的脚手架,maven已经为了我么提供了很多脚手架,方便我们快速的创建一个普通java项目或者是web项目,然而在实际开发中,例如银行项目,大部分都是ssm架构,我们 ...
- 手写Maven的archetype项目脚手架
一.背景 maven是一个很好的代码构建工具,采用“约定优先于配置”的原则进行项目管理,相信很多的java开发者应该都了解maven并可能在工作当中都是通过maven来管理项目的,在创建的项目的时候, ...
- SpringAOP03 项目脚手架、自定义注解、织入切面、引介增强
1 项目脚手架 利用 Maven 进行创建 1.1 利用IDEA创建一个Maven原型项目 技巧01:原型Maven项目是没有webapp文件夹和resources项目文件夹的,需要自己手动创建:创建 ...
- 解决创建maven项目Could not resolve archetype org.apache.maven.archetypes:maven-archetype-quickstart问题
今天用eclipse创建项目的时候报错如下图: 解决方案: 1.下载最新版maven-archetype-quickstart-1.1.jar 2.命令行到下载目录下执行mvn install:i ...
- 基于maven的项目脚手架,一键创建项目的项目模板
制作基于maven的项目脚手架 Springboot的出现极大的简化了项目开发的配置,然而,到真实使用的时候还是会有一堆配置需要设定.比如依赖管理,各种插件,质量扫描配置,docker配置,持续集成配 ...
- eclipse新建maven项目报错Could not resolve arachetype org.apache.maven.archetypes:mmaven-archetype-quickstart:1.1 from any of the configured repositories
使用eclipse新建maven项目,按下图所示选择后,报错 报错截图 报错详细信息 Could not resolve archetype org.apache.maven.archetypes:m ...
- 创建maven项目的时候:Could not resolve archetype org.apache.maven.archetypes:maven-archetype-webapp:1.0 from any of the configured repositories. 解决办法
问题: https://yq.aliyun.com/ziliao/364921 尝试没成功. https://www.aliyun.com/jiaocheng/296712.html 尝 ...
- eclispe 创建maven 项目:Could not resolve archetype org.apache.maven.archetypes
昨天新装eclispe 后,创建maven工程后出现 Could not resolve archetype org.apache.maven.archetypes:maven-archetype-q ...
- Eclipse使用Maven创建普通Java工程时错误:Could not resolve archetype org.apache.maven.archetypes:maven-archetype-quickstart:RELEASE from any of the configured repositories.
报错信息如下: Could not resolve archetype org.apache.maven.archetypes:maven-archetype-quickstart:RELEASE f ...
随机推荐
- 韩服LOL
※◆☆★☆◆※欢迎使用韩服LOL辅助,如有疑问请联系作者QQ:82850696*2*测试版已停用*1*2014-8-27 14:05:59*哈密*E2873D0137C6D04F42E088AA46E ...
- Thinkphp去掉index.php
1.httpd.conf配置文件中 #LoadModule rewrite_module modules/mod_rewrite.so 把前面的警号去掉2.AllowOverride None 将No ...
- Ajax Step By Step5
第五.[表单序列化] Ajax 用的最多的地方莫过于表单操作,而传统的表单操作是通过 submit 提交将数据传 输到服务器端.如果使用 Ajax 异步处理的话,我们需要将每个表单元素逐个获取才方能提 ...
- 替换CENTOS自带的yum源为网易163镜像源
首先确保你的系统是centos5或者centos6 先备份你系统自带的repo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/Cent ...
- linux下搭建nagios
配置环境:1)CentOS 6.5 作为监控主机,IP:10.0.0.30(根据自己公司需要改变) 2)客户机: windows server 2008R2 , windows 7, windows ...
- 安装dos2unix
在http://linux.softpedia.com/progDownload/Dos2Unix-Download-5519.html下载hd2u-1.0.0.tgz [root@localhost ...
- 16位汇编 多文件 intel汇编 编译器masm5.0 调用子程序库即静态库的自定义函数 WINDOWS
;以下是16位汇编 创建静态库,并调用静态库中的函数 ;多文件汇编格式 ;编译方法(此处用的是masm 5.0,如果是其他的编译器,有可能不能编译) ;第一种,编译方法 ;1.masm main.as ...
- Java 第18章 多态
18 章 --> 多态 继承: extends 抽象类 abstract (限制类的实例化) 抽象方法 public abstract void show(); //抽象方法只有方法的声明,没 ...
- Swift:subscript
本文转载自:http://blog.csdn.net/sinat_27706697/article/details/47122137 感谢作者:秋恨雪 通常情况下,我们在使用数组(Array)或字典( ...
- vc中获取磁盘IO统计计数
想知道进程读写磁盘的情况,可以获取当前进程或指定进程的IO计数. #include <Windows.h> int get_io_bytes(ULONGLONG * read_bytes, ...