首页 > 代码库 > 如何创建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