首页 > 代码库 > 如何创建Maven的Archetype
如何创建Maven的Archetype
原文:http://maven.apache.org/guides/mini/guide-creating-archetypes.html
创建Maven的Archetype是一个相当直接的过程。一个Archetype就是一个非常简单的作品,它包含了你所希望的工程的原型。一个Archetype的组成如下:
? 一个原型描述符(它是位于src/main/resources/META-INF/maven/目录中的archetype.xml文件)。这个文件中列出了该原型中包含的所有文件,并且对它们进行分类,以便能够被运行生产机制正确的处理。
? 需要原型插件复制的所有的原型文件(这些文件位于src/main/resources/archetype-resources/目录中)。
? 由该原型生成的工程对象模型(POM)(它是位于src/main/resources/archetype-resources目录中的pom.xml文件)
? 该原型工程的工程对象模型(POM)(它位于该运行工程的根目录pom.xml)
注意:这个最小化的指南是依据Archetype插件V1.0.x来写的,它使用旧的原型描述文件(保存在archetype.xml文件中)。Archetype插件V2.0.x是一个完全支持V1.0.x的新一代插件,并且它会添加一个新的原型描述符(它保存在archetype-metadata.xml文件中),它更加灵活,并提供更多的功能,但本质上与之前的版本是相同的。
以下是创建原型的步骤:
1. 给该原型创建一个新的工程和pom.xml文件
该原型的pom.xml示例如下:
<projectxmlns="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.0http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>my.groupId</groupId>
<artifactId>my-archetype-id</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
</project>
需要你做的所有事情就是指定一个groupId,artifactId和version。这三个参数需要以后在命令行通过archetype:generate命令中调用原型时使用。
2. 创建原型描述符
这个原型描述符时一个叫做archetype.xml的文件,它必须位于src/main/resources/META-INF/maven/目录中。在quickstart原型中会找到以下原型描述符:
<archetype xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype/1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype/1.0.0http://maven.apache.org/xsd/archetype-1.0.0.xsd">
<id>quickstart</id>
<sources>
<source>src/main/java/App.java</source>
</sources>
<testSources>
<source>src/test/java/AppTest.java</source>
</testSources>
</archetype>
<id>标签应该跟本原型pom.xml中的artifactId相同。
<allowPartial>true</allowPartial>标签时可选的,在既存的工程上运行archetype:generate命令时有可能会用到。
<sources>、<resources>、<testSources>、<testResources>和<siteResources>标签代表不同的工程片段:
<sources>=src/main/java
<resources>=src/main/resources
<testSources>=src/test/java
<testResources>=src/test/resources
<siteResources>=src/site
<sources>和<testSources>能够包含<source>元素来指定源文件
<testResources>和<siteResources>能够包含<resource>元素来指定资源文件
把其他的诸如src/main/webapp目录中资源放到<resources>标签中
至此,就指定了一个要创建的,而且目录不为空的独立的文件。
以下是quickstart原型中定义目录结构:
archetype
|-- pom.xml
`-- src
`-- main
`--resources
|--META-INF
| `-- maven
| `--archetype.xml
`--archetype-resources
|--pom.xml
`--src
|-- main
| `-- java
| `-- App.java
`-- test
`-- java
`-- AppTest.java
3. 创建原型文件和该原型的pom.xml
接下来要创建的原型组件是该原型的pom.xml文件,任何pom.xml都不要忘记设置artifactId和groupID(${artifactId}/${groupId})的变量。这两个变量会在命令行中调用archetype:generate时来初始化。
以下是一个原型pom.xml的示例:
<projectxmlns="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>Acustom project</name>
<url>http://www.myorganization.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
4. 安装原型并运行原型插件
现在可以调用mvn install命令来安装原型了。
至此我们的原型就创建完成了,你可以通过下面的命令在本地系统中使用它。在这个命令中,你需要给要使用的原型指定完整的信息(包括groupId、artifactId和version),以及你要创建的新工程的信息(包括artifactId和groupId)。不要忘记包含原型的版本信息,如果没有包含版本信息,原型的创建就会报出错误信息:RELEASE was not found)。
mvn archetype:generate \
-DarchetypeGroupId=<archetype-groupId> \
-DarchetypeArtifactId=<archetype-artifactId> \
-DarchetypeVersion=<archetype-version> \
-DgroupId=<my.groupid> \
-DartifactId=<my-artifactId>
一旦你的原型达到了你满意的状态,你就可以把它作为原型模板来部署,然后让任意Maven用户来使用。
5. 创建原型的另外一种方法
可以使用如下的方法来提供手工创建原型的目录结构:
mvn archetype:generate
-DgroupId=[yourproject‘s group id]
-DartifactId=[your project‘s artifact id]
-DarchetypeArtifactId=maven-archetype-archetype
然后,你就可以定制archetype-resources目录和archetype.xml文件中的内容,然后回到上面的步骤4(安装原型并运行原型插件)
如何创建Maven的Archetype