maven创建自定义Archetype步骤
2015-03-08 18:48
232 查看
Archetype是用于创建项目的骨架(或者模板),通过Archetype我们可以创建类似的Maven工程,同时Archetype能够极大的简化我们创建一个工程的步骤和流程。这里我将介绍自定义Maven的工程模板Archetype的方法和流程,这里采用的方法是从现有工程创建工程模板。
关于Archetype介绍参考:Introduction to Archetypes
2、从模板工程创建Archetype:打开cmd窗口,切换当前目录到上面的工程目录下,执行maven命令:
执行完成后,target/generated-sourced/archetype目录下就是我们需要的项目模板。
3、安装Archetype到本地仓库:cd进入target/generated-sourced/archetype中,执行命令:
将自定义Archetype安装到本地仓库即可:此时,自定义archetype就被安装到settings.xml中<localRepository>指定的本地仓库中,我的机器本地目录是D:/q/repos-maven;另外,archetype安装到本地仓库后,会在.m2/archetype-catalog.xml中加入对应的archetype节点,结构如下:
<archetype>
<groupId>com.xxxx.yyyy</groupId>
<artifactId>crm-archetype-archetype</artifactId>
<version>1.0.0</version>
<description>The parent pom of crm</description>
</archetype>
4、使用自定义Archetype创建工程:
这样我们就创建成功了自定义的Archetype,可以通过命令从本地模板创建工程:
以上就是创建自定义Archetype的简单流程。
如果以上自动生成的Archetype包含了一些不必要的文件,则可以继续对工程进行编辑,并且修改工程描述文件:/target/generated-sources/archetype/target/classes/META-INF/maven/archetype-metadata.xml
如下是我的工程定义描述:
1、属性变量定义
2、项目子模块定义
属于可选部分,在定义父子工程的时候才需要,描述了多个工程中包含的不同目录和文件。module主要由以下属性:
id:相当于工程的artifactId.
dir:相当于工程源文件在archetype-resources里对应的directory.
name:模块的名字.
3、文件集定义
fileSets:包含的文件集;
fileSet:包含的文件;
director:目录;
includes:包含的具体文件或者文件类型;
关于Archetype介绍参考:Introduction to Archetypes
一、Archetype自定义流程:
1、创建模板工程:找到一个现有的项目,进行编辑,将项目中的包结构、各类文件放置到合适的位置;2、从模板工程创建Archetype:打开cmd窗口,切换当前目录到上面的工程目录下,执行maven命令:
mvn archetype:create-from-project
执行完成后,target/generated-sourced/archetype目录下就是我们需要的项目模板。
3、安装Archetype到本地仓库:cd进入target/generated-sourced/archetype中,执行命令:
mvn -Dmaven.test.skip=true clean install
将自定义Archetype安装到本地仓库即可:此时,自定义archetype就被安装到settings.xml中<localRepository>指定的本地仓库中,我的机器本地目录是D:/q/repos-maven;另外,archetype安装到本地仓库后,会在.m2/archetype-catalog.xml中加入对应的archetype节点,结构如下:
<archetype>
<groupId>com.xxxx.yyyy</groupId>
<artifactId>crm-archetype-archetype</artifactId>
<version>1.0.0</version>
<description>The parent pom of crm</description>
</archetype>
4、使用自定义Archetype创建工程:
这样我们就创建成功了自定义的Archetype,可以通过命令从本地模板创建工程:
mvn archetype:generate -DarchetypeCatalog=local
以上就是创建自定义Archetype的简单流程。
如果以上自动生成的Archetype包含了一些不必要的文件,则可以继续对工程进行编辑,并且修改工程描述文件:/target/generated-sources/archetype/target/classes/META-INF/maven/archetype-metadata.xml
二、模板工程描述文件自定义
如果希望继续自定义,可以在一中执行了mvn archetype:create-from-project命令后,生成的目录中,编辑archetype-metadata.xml,删除无用文件等,然后在mvn install安装到本地目录。archetype-metadata.xml保存在:/target/generated-sources/archetype/target/classes/META-INF/maven/archetype-metadata.xml,该文件主要用于描述需要生成的工程的结构和文件等,其描述规则参考Maven官方文档:ArchetypeDescriptor如下是我的工程定义描述:
<?xml version="1.0" encoding="UTF-8"?> <archetype-descriptor xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0 http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd" name="crm-360-evalution" xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modules> <module id="${rootArtifactId}-common" dir="__rootArtifactId__-common" name="${rootArtifactId}-common"> <fileSets> <fileSet filtered="true" encoding="UTF-8"> <directory>src/main/java</directory> <includes> <include></include> </includes> </fileSet> </fileSets> </module> <module id="${rootArtifactId}-model" dir="__rootArtifactId__-model" name="${rootArtifactId}-model"> …… </module> <module id="${rootArtifactId}-dao" dir="__rootArtifactId__-dao" name="${rootArtifactId}-dao"> <fileSets> <fileSet filtered="true" encoding="UTF-8"> <directory>src/main/java</directory> <includes> <include></include> </includes> </fileSet> <fileSet encoding="UTF-8"> <directory>src/resources</directory> <includes> <include>**/*.xml</include> <include>**/*.properties</include> </includes> </fileSet> </fileSets> </module> <module id="${rootArtifactId}-service" dir="__rootArtifactId__-service" name="${rootArtifactId}-service"> …… </module> <module id="${rootArtifactId}-main" dir="__rootArtifactId__-main" name="${rootArtifactId}-main"> <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/main/webapp</directory> <includes> <include>**/*.vm</include> <include>**/*.jsp</include> <include>**/*.xml</include> <include>**/*.html</include> </includes> </fileSet> <fileSet filtered="true" encoding="UTF-8"> <directory>src/main/resources</directory> <includes> <include>**/*.xml</include> <include>**/*.properties</include> </includes> </fileSet> <fileSet filtered="true" encoding="UTF-8"> <directory>src/main/profiles</directory> <includes> <include>**/*.xml</include> <include>**/*.properties</include> </includes> </fileSet> </fileSets> </module> </modules> </archetype-descriptor>
1、属性变量定义
${rootArtifactId}在创建新的工程时,会根据定义的新工程的artifactId进行替换,将${rootArtifactId}替换为artifactId。
2、项目子模块定义
属于可选部分,在定义父子工程的时候才需要,描述了多个工程中包含的不同目录和文件。module主要由以下属性:
id:相当于工程的artifactId.
dir:相当于工程源文件在archetype-resources里对应的directory.
name:模块的名字.
<modules> <module id="${rootArtifactId}-model" dir="__rootArtifactId__-model" name="${rootArtifactId}-model"> …… </module> <module id="${rootArtifactId}-dao" dir="__rootArtifactId__-dao" name="${rootArtifactId}-dao"> …… </module> <modules>
3、文件集定义
fileSets:包含的文件集;
fileSet:包含的文件;
director:目录;
includes:包含的具体文件或者文件类型;
<fileSets> <fileSet filtered="true" encoding="UTF-8"> <directory>src/main/java</directory> <includes> <include></include> </includes> </fileSet> </fileSets>
相关文章推荐
- 使用maven创建自定义的archetype
- 创建maven自定义archetype项目
- 手把手创建自定义的分层的maven-archetype
- 使用maven3 创建自定义的archetype
- 使用maven3 创建自定义的archetype
- 使用maven3 创建自定义的archetype
- 使用maven3 创建自定义的archetype
- Maven创建自定义的Archetype
- [转]maven创建自定义的archetype
- maven 创建自定义archetype
- 使用maven3 创建自定义的archetype
- archetype:create-from-project命令创建maven模板工程(自定义项目模板并且上载到maven私服)
- 使用maven3 创建自定义的archetype
- 创建maven项目指定自定义-DarchetypeCatalog=file://archetype-catalog.xml遇到的问题
- 通过maven自定义archetype快速开发的步骤
- maven3创建自定义的archetype
- 使用Maven创建自定义Archetype
- 使用maven3 创建自定义的archetype
- 使用maven3 创建自定义的archetype
- 使用maven3 创建自定义的archetype .