Maven 三种archetype说明合集【转载】

Maven 三种archetype说明

新建Maven project项目时,需要选择archetype。

那么,什么是archetype?

archetype的意思就是模板原型的意思,原型是一个Maven项目模板工具包。一个原型被定义为从其中相同类型的所有其它事情是由一个原始图案或模型。名称配合,因为我们正在努力提供一种系统,该系统提供了一种生成Maven项目的一致的手段。原型将帮助作者为用户创建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 三种archetype说明_大旭123456的博客-CSDN博客_archetype maven

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中骨架原文链接:Maven 的41种骨架功能介绍 - _zao123 - 博客园

Maven 的41种骨架功能介绍

Maven 的41种骨架:

...>mvn archetype:generate

 ...>mvn archetype:generate
1: internal -> appfuse-basic-jsf (创建一个基于Hibernate,Spring和JSF的Web应用程序的原型) 
2: internal -> appfuse-basic-spring (创建一个基于Hibernate,Spring和Spring MVC的Web应用程序的原型) 
3: internal -> appfuse-basic-struts (创建一个基于Hibernate,Spring和Struts 2的Web应用程序的原型) 
4: internal -> appfuse-basic-tapestry (创建一个基于Hibernate, Spring 和 Tapestry 4的Web应用程序的原型) 
5: internal -> appfuse-core (创建一个基于 Hibernate and Spring 和 XFire的jar应用程序的原型) 
6: internal -> appfuse-modular-jsf (创建一个基于 Hibernate,Spring和JSF的模块化应用原型) 
7: internal -> appfuse-modular-spring (创建一个基于 Hibernate, Spring 和 Spring MVC 的模块化应用原型) 
8: internal -> appfuse-modular-struts (创建一个基于 Hibernate, Spring 和 Struts 2 的模块化应用原型) 
9: internal -> appfuse-modular-tapestry (创建一个基于 Hibernate, Spring 和 Tapestry 4 的模块化应用原型) 
10: internal -> maven-archetype-j2ee-simple (一个简单的J2EE的Java应用程序) 
11: internal -> maven-archetype-marmalade-mojo (一个Maven的 插件开发项目 using marmalade) 
12: internal -> maven-archetype-mojo (一个Maven的Java插件开发项目) 
13: internal -> maven-archetype-portlet (一个简单的portlet应用程序) 
14: internal -> maven-archetype-profiles () 
15: internal -> maven-archetype-quickstart () 
16: internal -> maven-archetype-site-simple (简单的网站生成项目) 
17: internal -> maven-archetype-site (更复杂的网站项目) 
18: internal -> maven-archetype-webapp (一个简单的Java Web应用程序) 
19: internal -> jini-service-archetype (Archetype for Jini service project creation) 
20: internal -> softeu-archetype-seam (JSF+Facelets+Seam Archetype) 
21: internal -> softeu-archetype-seam-simple (JSF+Facelets+Seam (无残留) 原型) 
22: internal -> softeu-archetype-jsf (JSF+Facelets 原型) 
23: internal -> jpa-maven-archetype (JPA 应用程序) 
24: internal -> spring-osgi-bundle-archetype (Spring-OSGi 原型) 
25: internal -> confluence-plugin-archetype (Atlassian 聚合插件原型) 
26: internal -> jira-plugin-archetype (Atlassian JIRA 插件原型) 
27: internal -> maven-archetype-har (Hibernate 存档) 
28: internal -> maven-archetype-sar (JBoss 服务存档) 
29: internal -> wicket-archetype-quickstart (一个简单的Apache Wicket的项目) 
30: internal -> scala-archetype-simple (一个简单的scala的项目) 
31: internal -> lift-archetype-blank (一个 blank/empty liftweb 项目) 
32: internal -> lift-archetype-basic (基本(liftweb)项目) 
33: internal -> cocoon-22-archetype-block-plain ([http://cocoapacorg2/maven-plugins/]) 
34: internal -> cocoon-22-archetype-block ([http://cocoapacorg2/maven-plugins/]) 
35: internal -> cocoon-22-archetype-webapp ([http://cocoapacorg2/maven-plugins/]) 
36: internal -> myfaces-archetype-helloworld (使用MyFaces的一个简单的原型) 
37: internal -> myfaces-archetype-helloworld-facelets (一个使用MyFaces和Facelets的简单原型) 
38: internal -> myfaces-archetype-trinidad (一个使用MyFaces和Trinidad的简单原型) 
39: internal -> myfaces-archetype-jsfcomponents (一种使用MyFaces创建定制JSF组件的简单的原型) 
40: internal -> gmaven-archetype-basic (Groovy的基本原型) 
41: internal -> gmaven-archetype-mojo (Groovy mojo 原型)

分类: Java, Maven

Maven Archetype简介以及搭建

为什么会写这篇文章,因为公司先在构建项目骨架都是用的 maven archetype,身为一个上进的渣渣猿,自己还是有必要了解下这个东西的。

Archetype介绍

Archetype 是一个 Maven 项目模板工具包。原型被定义为原始模式或模型,从中创建所有其他相同类型的东西。这些名称适合我们尝试提供一个系统,该系统提供生成Maven项目的一致方法。Archetype 将帮助作者为用户创建 Maven 项目模板,并为用户提供生成这些项目模板的参数化版本的方法。-- 摘自官网

Archetype创建

接下来,我们创建一个我们自己的 archetype.

1.创建一个maven项目

这里需要引入 maven-archetype-plugin

完整pom文件如下

<groupId>com.kevin</groupId>
    <artifactId>kevin-test-demo</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <organization>
        <name>kevin-养码青年</name>
        <url>https://www.cnblogs.com/zhenghengbin/</url>
    </organization>
​
​
    <properties>
        <jdk.version>1.8</jdk.version>
        <maven.archetype.version>3.0.1</maven.archetype.version>
    </properties>
​
    <dependencies>
        <dependency>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-archetype-plugin</artifactId>
            <version>${maven.archetype.version}</version>
        </dependency>
    </dependencies>
​
​
​
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>${jdk.version}</source>
                    <target>${jdk.version}</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
​
</project>

2、生成archetype

打开cmd窗口,在刚才的maven项目的根目录中运行maven命令:

mvn archetype:create-from-project

3、发布

进入 target/generated-sources/archetype 目录。执行 mvn install,当然也可以发布到私服,这里我没有私服,就只安装到本地

到此,我们自己的archetype 模板已经创建成功

Archetype 使用

使用很简单,我们要指定我们archetype信息

mvn archetype:generate -DarchetypeGroupId=com.kevin -DarchetypeArtifactId=kevin-test-demo-archetype -DarchetypeVersion=1.0-SNAPSHOT -DgroupId=com.kevin.productName -DartifactId=projectName -Dpackage=com.kevin.productName.projectName -Dversion=1.0.0 -DappName=projectName

** 注意事项 **

  • 上面语句是一条完整语句,不能有空格

  • -D 前面都有个空格

  • -DarchetypeArtifactId 注意后面有archetype

其中最后的5个参数根据实际的情况进行修改,基本规范如下:

  • groupId:项目工程的groupId;

  • artifactId:项目工程的artifactId;

  • package:项目工程的顶级package;

  • version:项目工程的版本号;

  • appName:项目工程打成包时的名字,当基于tomcat插件进行调试时,此名称也作为ContextPath名称。

总结

使用 archetype构建项目,不用让我们在添加各种 pom 文件或者 copy 代码。构建项目骨架简单迅速。 玩的开心!

原文链接:Maven Archetype简介以及搭建 - Kevin_zheng - 博客园

Maven Archetype原型

笔者最近在公司遇到一个需求,要创建一个基准项目,以此作为标准来创建后续的新项目。

emmmmmm

直接copy不行吗?

可以!但是复制过去之后会非常非常麻烦,工程量很大,失去了基准项目的意义。

那要怎么弄呢?

Maven Archetype闪亮登场,铛铛铛铛铛。

What is Maven Archetype?

我们从Maven的官网可以看到这样一句话:

In short, Archetype is a Maven project templating toolkit. An archetype is defined as an original pattern or model from which all other things of the same kind are made. The name fits as we are trying to provide a system that provides a consistent means of generating Maven projects. Archetype will help authors create Maven project templates for users, and provides users with the means to generate parameterized versions of those project templates.

翻译过来呢是这样子的:简而言之,Archetype是Maven项目模板工具箱。 原型定义为原始的图案或模型,可制成所有其他同类的东西。 这个名称正好适合我们试图提供一个提供生成Maven项目的一致方法的系统。 原型将帮助作者为用户创建Maven项目模板,并为用户提供生成这些项目模板的参数化版本的方法。

通过上述描述,我们可以把Archetype简单的理解为我们做蛋糕时候的模子,有了这个模子,我们只需要往里面有选择性的添加原料,就可以做出一样美味的蛋糕了。

How to use Maven Archetype?

上面呢,我们简单介绍了一下Archetype,也大概了解到这会是一个非常方便的东西,但是我们要怎么制作模子呢,制作好了之后,又要怎么使用呢?

1.如何制作Archetype

首先,我们心中要有一个模子的雏形,就像我们现在想要做一个心形的蛋糕,那么我们就要知道心形是什么样子的,才能做出一个心形的模子。 在这里呢,我们就需要一个可以作为模板的工程。例如下图所示:

标准demo工程

非常标准的一个小项目(手动狗头)。

接下来呢,我们就用这个项目作为例子,来演示如何使用Archetype。

第一步,我们进入这个项目的根目录,并执行 如下命令:

mvn -s "D:\SOFT\apache-maven-3.6.3\conf\settings.xml" archetype:create-from-project -DpackageName=com.mic.demo

  • -s:指定maven的setting文件

  • -DpackageName 指定项目默认包路径

看到如下结果的时候,就说明我们的模板制定成功了。

archetype制定成功

紧接着,我们可以来到demo项目的target/generated-sources目录下,看到生成的archetype项目,如下图:

archetype项目位置

第二步,我们可以把archetype目录复制出来,单独作为一个项目来看。(单独复制出来不是必须的) 导入到idea里面后,我们可以看到archetype的项目结构如下:

archetype工程结构

我们现在要做的就是将这个archetype项目打包到我们的maven本地仓库中。 在archetype项目的的根目录下执行如下命令:

mvn install

打包成功后,我们可以在本地仓库中找到对应的archetype-catalog.xml文件以及生成的对应archetype的jar包

archetypeCatalog.jpg


archetypeJar.jpg

至此,我们的archetype模板就制作完成了。

2.使用已经做好的archetype模型

其实使用起来非常简单,两种方式:

  • 结合idea来使用

    我们打开idea来创建一个maven项目,并选择add Archetype,将刚刚我们生成的模板坐标添加进去。

在idea中添加archetype模板

选择刚刚添加的模板,下一步,下一步,下一步,就能生成新的项目了。

生成的新项目

是不是跟我们做模板的工程一模一样,嘻嘻。

  • 直接用命令来创建(比较拉风,实质没啥区别)

    在存放代码的目录执行如下命令:

    mvn archetype:generate -DarchetypeGroupId=com.mic / -DarchetypeArtifactId=demo-archetype / -DarchetypeVersion=0.0.1-SNAPSHOT / -DgroupId=com.mic / -DartifactId=archetype-test / -Dversion=0.1 / -Dpackage=com.chenyao.ace / -DinteractiveMode=false

3.总结

本文,我们简单介绍了Maven的Archetype,如何创建自己的Archetype以及如何使用Archetype。后面再有需要创建新项目的时候,可以拿来试一下,装逼利器,事半功倍。

4.注意事项

在创建archetype模板的时候,其实只需要执行:

mvn archetype:create-from-project

但是有时候针对maven不同的配置,有可能会去.m2目录下去找settings.xml,可能会造成创建失败。

另外不指定package的话,可能会造成包路径重复。

作者:番茄不爱炒鸡蛋 链接:https://www.jianshu.com/p/8ed58fb64c7d 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Maven中的Archetype概念及作用用途

Archetype,骨架的意思。

文章出处:http://m.blog.csdn.net/blog/FireOfStar/42526027Maven的Archetype简介 - LinkinPark - 博客园

Archetype是什么?

简单的说,Archetype是Maven工程的模板工具包。一个Archetype定义了要做的相同类型事情的初始样式或模型。这个名称给我们提供来了一个一致的生成Maven工程的方式。Archetype会帮助作者给用户创建Maven工程模板,并给用户提供生成相关工程模板版本的参数化方法。

使用Archetype提供的好的方法,是开发者能够使用最佳实践来快速的构建和组织一致化的工程。在Maven工程中,我们努力使用Archetype来尽可能快的给用户提供示例工程,同时也会把Maven的最佳实践介绍给新的用户。一个新的用户可以使用工作中的Maven工作作为跳板来研究更过的Maven中功能。我们也可以使用Archetype的添加机制,这样就意味着允许我们抓取Archetype中项目片段,并把它们添加到既存的工程中。Maven网站的Archetype就是很好的例子。例如,你可以使用“quick start archetype”来生成一个工程,然后就可以通过其中既存的“site archetype”来快速的创建一个网址工程。你能够使用Archetype来做很多这样的事情。

在你的团队中可能想要标准化的J2EE开发,这需要你提供EJBs、或者是WARs、或者是Web services的原型。一旦在你团队资源库中创建和部署这些原型,它们就可以在你团队内共享使用。

如何使用Archetype

要基于Archetype来创建一个新的工程,需要像下面示例这样来调用:

mvn archetype:generate

已有的Archetypes

Archetype ID说明
maven-archetype-archetype一个样例原型
maven-archetype-j2ee-simple简单的J2EE应用程序样例
maven-archetype-mojoMaven插件样本的示例
maven-archetype-pluginMaven插件样本
maven-archetype-plugin-siteMave插件网站的样例
maven-archetype-portletJSR-268门户样例
maven-archetype-quickstartMaven工程样例
maven-archetype-simple一个简单的Maven工程
maven-archetype-siteMaven网站的样例,它演示了对诸如APT、XDoc和FML等文档类型的支持,并演示了如果把网站国际化(i18n)
maven-archetype-site-simpleMaven网站样例
maven-archetype-webappMaven的Webapp工程样例
  • 常用Archetype

1,maven-archetype-quickstart

默认的Archetype,基本内容包括: 一个包含junit依赖声明的pom.xml src/main/java主代码目录及一个名为App的类 src/test/java测试代码目录及一个名为AppTest的测试用例

2,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文件

也就是当创建一个Maven工程的时候,需要选择一个骨架,上面的这就是常用的两种项目骨架,选择了会生成了一个基本的项目结构,更方便的开发

原文链接:Maven中的Archetype概念及作用用途 - fen斗 - 博客园

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值