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 原型)
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/42526027 ,Maven的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-mojo | Maven插件样本的示例 |
maven-archetype-plugin | Maven插件样本 |
maven-archetype-plugin-site | Mave插件网站的样例 |
maven-archetype-portlet | JSR-268门户样例 |
maven-archetype-quickstart | Maven工程样例 |
maven-archetype-simple | 一个简单的Maven工程 |
maven-archetype-site | Maven网站的样例,它演示了对诸如APT、XDoc和FML等文档类型的支持,并演示了如果把网站国际化(i18n) |
maven-archetype-site-simple | Maven网站样例 |
maven-archetype-webapp | Maven的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工程的时候,需要选择一个骨架,上面的这就是常用的两种项目骨架,选择了会生成了一个基本的项目结构,更方便的开发