Maven 三種archetype(原型)

新建Maven project項目時,需要選擇archetype。

那麼,什麼是archetype?

archetype就是模板原型的意思,原型將幫助作者爲用戶創建Maven項目模板,併爲用戶提供了手段,產生的這些項目模板參數化的版本。

 

建立Maven項目時,網上建議的分別是 

1、cocoon-22-archetype-webapp

2、maven-archetype-quickstart

3、maven-archetype-webapp

 

1、cocoon-22-archetype-webapp

建好項目後,項目的結構如下:

可以看到,這個項目結構裏包含了applicationContext.xml、log4j.xml、web.xml

pom.xml的內容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at
   http://www.apache.org/licenses/LICENSE-2.0
  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License.
-->
<!-- $Id: pom.xml 642118 2008-03-28 08:04:16Z reinhard $ -->
<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/maven-v4_0_0.xsd">
 
  <modelVersion>4.0.0</modelVersion>
  <packaging>war</packaging>
 
  <name>springboot-cocoon</name>
  <groupId>com.study.cx</groupId>
  <artifactId>springboot-cocoon</artifactId>
  <version>0.0.1-SNAPSHOT</version>
 
  <build>
    <plugins>
      <plugin>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>maven-jetty-plugin</artifactId>
        <version>6.1.7</version>
        <configuration>
          <connectors>
            <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
              <port>8888</port>
              <maxIdleTime>30000</maxIdleTime>
            </connector>
          </connectors>
          <webAppSourceDirectory>${project.build.directory}/${pom.artifactId}-${pom.version}</webAppSourceDirectory>
          <contextPath>/</contextPath>
        </configuration>
      </plugin>
    </plugins>
  </build>
 
  <dependencies>
    <!--dependency>
      <groupId>com.study.cx</groupId>
      <artifactId>[the artifact id of the block to be mounted]</artifactId>
      <version>0.0.1-SNAPSHOT</version>
    </dependency-->
  </dependencies>
 
</project>

2、maven-archetype-quickstart

建好項目後,項目的結構如下:

在這個項目裏,除了pom.xml外,沒有其他的xml了,但是有main、test兩個包,包裏放了一個App、AppTest類

pom.xml的內容如下:

<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.study.cx</groupId>
  <artifactId>springboot-quickstart</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>
 
  <name>springboot-quickstart</name>
  <url>http://maven.apache.org</url>
 
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
 
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

3、maven-archetype-webapp

建好項目後,項目的結構如下:

在這個項目裏,有WEB-INF目錄,並且有web.xml和一個index.jsp

pom.xml的內容如下:

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.study.cx</groupId>
  <artifactId>srpingboot-mavenWebapp</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>srpingboot-mavenWebapp Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <finalName>srpingboot-mavenWebapp</finalName>
  </build>
</project>

maven提供的41個骨架原型分別是:

1: appfuse-basic-jsf (創建一個基於Hibernate,Spring和JSF的Web應用程序的原型) 
2: appfuse-basic-spring(創建一個基於Hibernate,Spring和Spring MVC的Web應用程序的原型) 
3: appfuse-basic-struts(創建一個基於Hibernate,Spring和Struts 2的Web應用程序的原型) 
4: appfuse-basic-tapestry(創建一個基於Hibernate,Spring 和 Tapestry 4的Web應用程序的原型) 
5: appfuse-core(創建一個基於Hibernate,Spring 和 XFire的jar應用程序的原型) 
6: appfuse-modular-jsf(創建一個基於Hibernate,Spring和JSF的模塊化應用原型) 
7: appfuse-modular-spring(創建一個基於Hibernate, Spring 和 Spring MVC 的模塊化應用原型) 
8: appfuse-modular-struts(創建一個基於Hibernate, Spring 和 Struts 2 的模塊化應用原型) 
9: appfuse-modular-tapestry (創建一個基於 Hibernate, Spring 和 Tapestry 4 的模塊化應用原型) 
10: maven-archetype-j2ee-simple(一個簡單的J2EE的Java應用程序) 
11: maven-archetype-marmalade-mojo(一個Maven的 插件開發項目 using marmalade) 
12: maven-archetype-mojo(一個Maven的Java插件開發項目) 
13: maven-archetype-portlet(一個簡單的portlet應用程序) 
14: maven-archetype-profiles() 
15:maven-archetype-quickstart() 
16: maven-archetype-site-simple(簡單的網站生成項目) 
17: maven-archetype-site(更復雜的網站項目) 
18:maven-archetype-webapp(一個簡單的Java Web應用程序) 
19: jini-service-archetype(Archetype for Jini service project creation) 
20: softeu-archetype-seam(JSF+Facelets+Seam Archetype) 
21: softeu-archetype-seam-simple(JSF+Facelets+Seam (無殘留) 原型) 
22: softeu-archetype-jsf(JSF+Facelets 原型) 
23: jpa-maven-archetype(JPA 應用程序) 
24: spring-osgi-bundle-archetype(Spring-OSGi 原型) 
25: confluence-plugin-archetype(Atlassian 聚合插件原型) 
26: jira-plugin-archetype(Atlassian JIRA 插件原型) 
27: maven-archetype-har(Hibernate 存檔) 
28: maven-archetype-sar(JBoss 服務存檔) 
29: wicket-archetype-quickstart(一個簡單的Apache Wicket的項目) 
30: scala-archetype-simple(一個簡單的scala的項目) 
31: lift-archetype-blank(一個 blank/empty liftweb 項目) 
32: lift-archetype-basic(基本(liftweb)項目) 
33: cocoon-22-archetype-block-plain([http://cocoapacorg2/maven-plugins/]) 
34: cocoon-22-archetype-block([http://cocoapacorg2/maven-plugins/]) 
35:cocoon-22-archetype-webapp([http://cocoapacorg2/maven-plugins/]) 
36: myfaces-archetype-helloworld(使用MyFaces的一個簡單的原型) 
37: myfaces-archetype-helloworld-facelets(一個使用MyFaces和Facelets的簡單原型) 
38: myfaces-archetype-trinidad(一個使用MyFaces和Trinidad的簡單原型) 
39: myfaces-archetype-jsfcomponents(一種使用MyFaces創建定製JSF組件的簡單的原型) 
40: gmaven-archetype-basic(Groovy的基本原型) 
41: gmaven-archetype-mojo(Groovy mojo 原型)

(41中骨架原文鏈接:http://www.cnblogs.com/iusmile/archive/2012/11/14/2770118.html)

 

示例——使用Archetype生成項目骨架:

cmd中運行:

mvn archetype:generate
會看到常常的輸出,有很多可用的Archetype供選擇;每一個Archetype前面都有一個對應的編號,同時命令行會提供一個默認的編號,其對應的Archetype爲maven-archetype-quickstart,回車選擇該Archetype:

緊接着Maven會提示輸入要創建項目的groupId,artifactId,version及包名package:

Archetype會根據輸入的信息創建項目骨架。在當前目錄下,創建一個名爲hellomvn(定義的artifactId)的子目錄,從中可以看到項目的基本結構:基本的pom.xml,代碼目錄src/main/java,同時包含一個java類:com.mvntest.hellomvn.core.App。測試代碼目錄src/test/java,也包含一個測試Jave類com.mvntest.hellomvn.core.AppTest。

一個項目的基本骨架生成。

Archetype
可以講Archetype理解成Maven項目的模板,例如maven-archetype-quickstart就是最簡單的Maven項目模板,只需提供基本的元素,如groupId,artifactId,version等,它就能生成項目的基本結構及POM文件。

Maven Archetype Plugin


使用Archetype的一般步驟
命令——mvn archetype:generate
輸入命令後,Archetype插件會輸出一個Archetype列表供用戶選擇;選擇自己想要使用的Archetype,輸入對應編號
提示輸入一些基本參數,如groupId,artifactId,version,package等
Archetype插件生成項目骨架
常用Archetype
maven-archetype-quickstart


默認的Archetype,基本內容包括:

一個包含junit依賴聲明的pom.xml
src/main/java主代碼目錄及一個名爲App的類
src/test/java測試代碼目錄及一個名爲AppTest的測試用例
maven-archetype-webapp


一個最簡單的Maven war項目模板,當需要快速創建一個Web應用的時候可以使用它。生成的項目內容包括:

一個packaging爲war且帶有junit依賴聲明的pom.xml
src/main/webapp/目錄
src/main/webapp/index.jsp文件
src/main/webapp/WEB-INF/web.xml文件
創建自己的Archetype


Archetype Catalog
Catalog用來指定maven-archetype-plugin讀取archetype-catalog.xml文件的位置:

internal——maven-archetype-plugin內置的
local——本地的,通常位置爲~/.m2/archetype-catalog.xml
remote——指向Maven中央倉庫的Catalog
file://
http://

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章