maven自定义archetype
-
-
- pom.xml的jar包依赖、插件配置,保留最小依赖集
- Spring、Struts2、mybatis配置
- log4j.xml
-
<build> <finalName>hhyz-archetype-web</finalName> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-archetype-plugin</artifactId> <version>2.2</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.5</source> <target>1.5</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <configuration> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </pluginManagement> </build>
第四步: 从A-min项目中创建maven骨架项目
打开CMD进入命令行,在项目根目录里执行: mvn archetype:create-from-project。
成功执行完之后,在target/generated-sources/ 下有个archetype目录,这个就是生成的 archetype。可以看到这个目录其实就是普通的maven项目,也就是我们最终的骨架模板项目,我们称之为A-template项目。
有几个目录、文件需要说明:
-
-
- src/main/resources/archetype-resources 通过A-template骨架创建的项目包含的所有的文件和目录都在这个目录下
- src/main/resource/META-INF/maven/archetype-metadata.xml 此文件是配置文件,告诉archetype插件,archetype-resources里面哪些文件需要包含到创建出的项目里。打开这个文件发现有个fileSets标签,包含一系列的fileSet标签。不难发现fileSet就是对archetype-resources下的资源描述。
-
第五步:改造A-template
archetype:create-from-project并非完全智能,需要自己稍加修改
-
-
- 修改pom.xml文件
-
修改packing的值为jar或者war
-
-
- 修改archetype-metadata.xml
-
<requiredProperties> <requiredProperty key="groupId"/> <requiredProperty key="artifactId"/> <requiredProperty key="version"> <defaultValue>1.0.0</defaultValue> </requiredProperty> </requiredProperties>
在fileSets同级下增加requiredProperties标签。requiredProperties定义模板项目中一些参数值,内置的参数包括:groupId,artifactId,version,package。自己可以提供这些参数的默认值,也可以增加自己额外的参数。大部分情况下,内置的参数足够用。fileSet标签有一个filtered=“true”属性,表示该fileSet可以使用参数变量。在文件中引用参数变量的方式${参数名},例如${package}.通常生成A-template项目时,archetype插件会扫描A-min所有的文件,把需要替换为参数的地方自动替换。毕竟代码没有那么智能,有些地方会有问题。所以,我们要检查每个文件的参数部分是不是我们预期的。增加参数、删除参数来达到我们的要求。
第六步:部署生成的archetype到本地仓库
cd进入generated-sourced/archetype目录,运行maven命令:mvn clean install,到这里我们的模板骨架项目基本完成。
3.使用自定义的模板创建项目
方式一:使用命令行