根据需要定制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:workspaceArcheTypeDemo argetgenerated-sourcesarchetype argetArcheTypeDemo-archetype-0.0.1-SNAPSHOT.jar to D:Javalocal_repository etoseyeArcheTypeDemo-archetype .0.1-SNAPSHOTArcheTypeDemo-archetype-0.0.1-SNAPSHOT.jar
[INFO] Installing D:workspaceArcheTypeDemo argetgenerated-sourcesarchetypepom.xml to D:Javalocal_repository etoseyeArcheTypeDemo-archetype .0.1-SNAPSHOTArcheTypeDemo-archetype-0.0.1-SNAPSHOT.pom
[INFO]
[INFO] --- maven-archetype-plugin:2.2:update-local-catalog (default-update-local-catalog) @ ArcheTypeDemo-archetype --- -
使用定制的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>