根据需要定制Maven的ArcheType的好处不言而喻了,我就不再啰嗦。定制一般通过从Maven的项目构建,比手动构建省去了配置文件的编写、资源文件的复制等繁琐的操作,下面我们就说下从Maven项目中构建定制的ArcheType。
- 构建Maven项目
你可以使用Maven命令来创建,我们这使用Eclipse来构建项目,因为后面将展示如何使用配置文件来清理一些不想要的资源。使用Eclipse(安装了Maven插件的)创建Maven Project项目:File->New->Other->Maven->Maven Project
创建的项目结构如:
默认的Junit使用的版本是3.8.1,我们想以后都使用比较新的版本如4.11(仓库查询:http://mvnrepository.com),需要修改pom.xml,把<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>修改为
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency> - 生成archetype
在ArcheTypeDemo上右键->Run As->Maven build...
默认的是使用maven-archetype-plugin:2.2生成的,如果你需要使用最新版本的maven-archetype-plugin请配置pom.xml,Run后在target目录下生成了一个generated-sources目录,里面就是archetype。 - 安装archetype到本地仓库
如操作步骤如2,但”Base directory“需要选择generated-sources/archetype,然后在Goals里输入install,或使用Maven指令cd target/generated-sources/archetype& mvn install
执行后输出:
[INFO] --- maven-install-plugin:2.5.1:install (default-install) @ ArcheTypeDemo-archetype ---
[INFO] Installing D:\workspace\ArcheTypeDemo\target\generated-sources\archetype\target\ArcheTypeDemo-archetype-0.0.1-SNAPSHOT.jar to D:\Java\local_repository\net\oseye\ArcheTypeDemo-archetype\0.0.1-SNAPSHOT\ArcheTypeDemo-archetype-0.0.1-SNAPSHOT.jar
[INFO] Installing D:\workspace\ArcheTypeDemo\target\generated-sources\archetype\pom.xml to D:\Java\local_repository\net\oseye\ArcheTypeDemo-archetype\0.0.1-SNAPSHOT\ArcheTypeDemo-archetype-0.0.1-SNAPSHOT.pom
[INFO]
[INFO] --- maven-archetype-plugin:2.2:update-local-catalog (default-update-local-catalog) @ ArcheTypeDemo-archetype ---这样就把你定制的archetype发布到本地仓库了,如果要安装到远程仓库需要使用deploy命令。
- 使用定制的archetype
安装完后,如步骤1的操作步骤来创建Maven Project,在选择Archetype的时候,通过Filter: - 清理工作
如果步骤4,你不使用Eclipse,而是使用Maven指令来创建,创建的项目你会多了一些不必要的文件:
很不干净。需要修改target/generated-sources/archetype/src/main/resources/META-INF/maven/archetype-metadata.xml
来清理,删除
<fileSet encoding="UTF-8">
<directory>.settings</directory>
<includes>
<include>**/*.prefs</include>
</includes>
</fileSet>
<fileSet filtered="true" encoding="UTF-8">
<directory></directory>
<includes>
<include>.classpath</include>
<include>.project</include>
</includes>
</fileSet>然后重新安装ArcheType到本地仓库即可。