问题描述:每次新建Maven Web项目时,Maven自带的maven-archetype-webapp并不好用,其默认的Dynamic Web Module是2.3,Java是1.5,默认的Java版本可以通过配置pom.xml或者settings.xml文件进行修改(修改方法),但Dynamic Web Module每次都要自己修改(修改方法),很麻烦,而且自己创建Archetype可以包含自己经常用到的东西,还可以直接配置好框架。
环境:Maven 3.3.3
方法:
1.新建一个Maven项目,然后把经常用到的代码或者配置文件等等都加进来,或者配置好框架,比如集成SSM。
2.在pom.xml文件中配置插件
打开项目的pom.xml文件,然后在<build></build>标签内加入以下插件配置代码段:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-archetype-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
3.进入项目根目录,Shift+鼠标右键-->在此处打开命令窗口,或者cmd窗口中cd到项目的根目录,然后运行maven命令:
mvn archetype:create-from-project
运行成功后,你可以看到以下类似信息:
表明Archetype已经创建,在target\generated-sources\archetype中。
如果显示build failure和error信息,则表明失败,你可以根据error信息进行修改并解决。这里我曾遇到一个问题,就是maven安装路径下bin目录下的mvn.bat没有找到,此时只需要把bin目录下的mvn.cmd文件后缀名改为bat即可,好像从Apache Maven官网上下载下来的win 64版本都是mvn.cmd。
4.然后cd进入创建好的Archetype所在目录,即target\generated-sources\archetype目录,运行maven命令:
mvn install
运行成功后,如图:
可以看到build success,表明Archetype已经成功安装到本地仓库。
5.Archetype安装路径
查看Maven安装目录下conf文件夹中的settings.xml文件,如果你在此设置了<localRepository>本地仓库路径,则Archetype就安装在这个路径下。同时在<localRepository>默认路径:个人文件夹/.m2目录下会有一个archetype-catalog.xml文件,如果没有这个文件,就执行 mvn archetype:crawl 命令生成该文件。打开文件,可以看到Archetype的groupId、artifactId等。
<archetype>
<groupId>com.cyou.mrd</groupId>
<artifactId>IosTestServerDemo-archetype</artifactId>
<version>0.0.1-SNAPSHOT</version>
<description>IosTestServerDemo-archetype</description>
</archetype>
6.使用自定义Archetype
CMD窗口中输入 mvn archetype:generate -DarchetypeCatalog=local ,然后根据提示输入项目相关信息,一步一步往下走即可。创建项目完成后,使用Eclipse导入项目。
如果想在Eclipse中新建Maven项目时直接使用Archetype,则需要在Eclipse中Window-->Preferences-->Maven-->User Settings中,将User Settings设置的settings.xml文件里的本地仓库地址与maven安装目录下conf/settings.xml文件里的本地仓库地址保持一致。然后在New Maven Projcet界面,勾选Include snapshot archetypes,把Catalog选为Default Local,就可以看到自定义的Archetype了。
7.删除安装的自定义Archetype
(1).打开个人文件夹/.m2目录下的archetype-catalog.xml文件,将对应的<archetype></archetype>删除,比如删除文中刚刚安装的自定义archetype,那就把第5步中的<archetype></archetype>删除;
(2).退出Eclipse,进入自己设置的本地仓库中,进入groupId对应的文件夹,然后把artifactId对应的文件夹删除,同样以刚才安装的archetype为例,groupId为:com.cyou.mrd,artifactId为:IosTestServerDemo-archetype,则在本地仓库com\cyou\mrd目录下有一个名为IosTestServerDemo-archetype文件夹,把它删除掉。
8.修改安装的自定义Archetype
某些时候,我们可能对生成的archetype不太满意,比如要改动配置文件,虽然也可以新建项目后直接修改,但这样每次新建后都要修改,所以就在源项目中先修改了,然后再重新生成一次archetype吧。
(1).执行上面的删除步骤;
(2).进入项目根目录,把target\generated-sources\archetype目录下的文件都删除掉或者直接把target下的generated-sources文件夹删掉,然后重新生成Archetype就行了。