在上篇Intellij修改archetype Plugin配置 中我們已經簡單介紹了關於archetype的作用。
簡單來說maven archetype插件就是創建項目的腳手架,你可以通過命令行或者IDE集成簡化項目創建的工作。例如:
- org.apache.maven.archetypes:maven-archetype-quickstart
- org.apache.maven.archetypes:maven-archetype-site
- org.apache.maven.archetypes:maven-archetype-webapp
- 以及spring或者第三方提供了一些archetype plugin。
同時maven archetype插件也是一個簡單的maven artifact,它包含了創建項目所需要的所有資源。 主要分為幾類原型信息:
- archetype描述文件(src/main/resources/META-INF/maven/archetype.xml),這為archetype 1.0, 包含所有創建項目的文件信息和路徑信息。在(archetype 2.0)[http://maven.apache.org/archetype/maven-archetype-plugin/]增加了更靈活的archetype-metadata.xml(src/main/resources/META-INF/maven/下), archetype元數據信息,並且完全支持1.0.
- 項目的原型文件(src/main/resources/archetype-resources/之下),將會被archetype插件 copy到項目目錄結構去。
- 創建項目的pom文件(src/main/resources/archetype-resources下)
- archetype pom文件,在archetype項目根目錄下。
創建archetype插件
-
首先在archetype中加入一個pom文件,如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.github.greengerong</groupId> <artifactId>component</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>component</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> </dependencies> </project>
-
創建archetype-metadata.xml,位於src/main/resources/META-INF/maven/目錄下,例如:
<?xml version="1.0" encoding="UTF-8"?> <archetype-descriptor name="app-server"> <fileSets> <fileSet filtered="true" encoding="UTF-8"> <directory>src/main/java</directory> <includes> <include>**/*.**</include> </includes> </fileSet> <fileSet filtered="true" encoding="UTF-8"> <directory>src/test/java</directory> <includes> <include>**/*.**</include> </includes> </fileSet> </fileSets> </archetype-descriptor>
更多配置信息參考archetype-descriptor.
-
為將創建的項目增加pom.xml文件,以${artifactId} / ${groupId} 變量作為占位符,例如:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>${groupId}</groupId> <artifactId>${artifactId}</artifactId> <version>${version}</version> <packaging>jar</packaging> <name>${artifactId}</name> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> <build> <pluginManagement> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> </plugins> </pluginManagement> </build> </project>
-
接下來在archetype項目下install plugin:mvn clean install.
-
利用已有acrchetype plugin創建項目:
命令行:
mvn archetype:generate -DarchetypeGroupId=<archetype-groupId> -DarchetypeArtifactId=<archetype-artifactId> -DarchetypeVersion=<archetype-version> -DgroupId=<my.groupid> -DartifactId=<my-artifactId>
Intellij選擇增加archetype plugin:

對於刪除intellij 測試 archetype信息,請參見Intellij修改archetype Plugin配置.
注意:
- 如果你也需要文件或者目錄名字以artifactId生成,則需要用特殊變量__artifactId__(雙下划線)作為占位符。
本文demo,請移到到github maven-archetypes-demo.
