使用archetype自定义项目原型

 

Maven Archetype Plugin可以根据一个已存在的项目,创建一个原型项目。然后可以使用此原型项目,创建最终的用于实际开发的项目。

 

Archetype翻译为原型,也可以理解为模板。简单的说,Maven Archetype Plugin可以帮助我们把一个已存在的项目制作为项目模板,然后根据此项目模板,创建一个新的项目。此插件的官方文档请参考Maven Archetype Plugin

 

以下介绍如何在Eclipse里使用Maven Archetype Plugin,开发环境搭建请参考<<搭建基于Eclipse+Maven的开发环境>>

 

1.使用maven-archetype-quickstart项目原型创建一个Maven项目hello-maven,具体可参考帖子开发环境搭建

 

2.右键点击hello-maven项目-->Run As-->Maven build...,创建一个Eclipse运行配置。在弹出的窗口输入如下命令,最后点击Run按钮:

 

 

3.运行完成后,会在hello-maven项目的target/generated-sources/archetype目录下,生成原型项目文件(如果没有看见,可右键点击项目-->Refresh)



 

 

4.接着把原型项目文件导入一个Maven项目,方便修改。点击菜单项File-->New-->Project..,在弹出窗选择General-->Project,新建一个普通项目hello-maven-archetype

 

5.右键点击新建的hello-maven-archetype项目-->Configure-->Convert to Maven Project,把此项目转换为Maven项目,在弹出窗口输入以下信息,点击Finish按钮:



 

 

6.转换为Maven项目后,会生成pom.xml文件,备份此文件(可简单右键复制-->粘贴),后面会用到此文件里的信息

 

 

6.把以上步骤生成的hello-maven项目下的target/generated-sources/archetype下的所有文件复制-->粘贴到hello-maven-archetype项目下(如果提示文件已存在,则选择直接覆盖)。复制后的项目目录如下:

 

 

7.打开Copy of pom.xml,把此文件里的内容覆盖到相应的pom.xml文件里,然后删除Copy of pom.xml。以下为覆盖后的pom.xml的部分内容:
注意:version需修改为0.0.1,如果版本号带有SNAPSHOT等字样,后期在新建Maven项目时,会选择不到hello-maven-archetype原型

 
 

8.此时,如果发现hello-maven-archetype有错误,可打开Problem视图,右键点击错误项-->Quick Fix,点击弹出窗口的Finish按钮,更新Maven配置即可

 

9.右键点击hello-maven-archetype项目-->Run As-->Maven install,把此项目原型安装到Maven仓库,以便后面使用

 

10.下面介绍如何使用hello-maven-archetype。点击菜单项File-->New-->Project..-->Maven-->Maven Project, 新建一个Maven项目。点击Next按钮,在以下界面,点击Add Archetype..按钮,添加我们自定义的hello-maven-archetype

 

 

11.在弹出窗口输入以下信息(需要与hello-maven-archetype的pom.xml里的信息对应),点击确定按钮(此处添加的信息将会保存在{USER_HOME}\.m2\archetype-catalog.xml,可以直接编辑此文件添加自定义的archetype项目):

 

12.选择Default Local-->hello-maven-archetype,创建hello-maven-one项目,后面步骤省略

注1:如果选择不到,请先确认版本号没有SNAPSHOT字样,然后试试使用-clean参数重启Eclipse

注2:如果直接就可以选到,可跳过前面Add Archetype步骤



 

以上,hello-maven是已存在的示例项目,hello-maven-archetype是原型项目,hello-maven-one是根据原型项目创建的最终项目,可用于实际开发

 

我们可以修改原型项目里的archetype-metadata.xml,以决定如何创建最终项目。比如可设置原型项目里哪些文件目录需要放入最终项目。具体设置请参考官方文档ArcheTypeDescriptor

 

可设置原型项目里的文件是否经过渲染后,再放入最终项目里。archetype插件使用Velocity作为渲染引擎。并且预先定义了gruopId, artifactId, version, package 四个变量。打开原型项目文件pom.xml:

 

 

可以看到此文件使用了${gruopId},${artifactId},${version}引用了预定义的变量值:

 

打开原型项目文件App.java,可见此文件使用了${package}引用了预定义变量值:

 

在创建Maven项目的最后一步,可以设置这些变量值,而自定义变量值将显示在下面:

 

以下代码在archetype-metadata.xml里自定义了一个appClassName变量,其默认值为Hello:

 

可以在项目原型文件里使用${appClassName}引用此变量值,可以使用__appClassName__在项目原型文件名称里引用此变量值,如:
 注:archetype插件暂不支持在项目原型文件名称里引用变量值,但是使用以上格式却可以引用

 

自定义变量需要在archetype.properties里配置默认值,否则在运行mvn install命令时会提示测试不通过:

 

 如果原型项目所在的Maven仓库需要身份验证,那么在settings.xml里配置的server名称必须是[archetypeArtifactId]-repo,以本文为例,配置如下:

注:如果你的所有自定义原型项目都在同一个远程Maven仓库里,那么server的名称可以设置为archetype

<server>  
	<id>hello-maven-archetype-repo</id>  
	<username>your_username</username>  
	<password>your_password</password>  
 </server>  

 


 

 

展开阅读全文
博主设置当前文章不允许评论。

没有更多推荐了,返回首页