Maven Archetype的设计和使用
Posted 天码营
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Maven Archetype的设计和使用相关的知识,希望对你有一定的参考价值。
「内容简介」通过Maven Archetype,开发人员可以很方便地将一类项目的最佳实现应用到自己的项目中。在一个Maven项目中,开发者可以通过archetype提供的范例快速入门并了解该项目的结构与特点。
一、Archetype介绍
Archetype是一个Maven项目的模板工具包,它定义了一类项目的基本架构。Archetype为开发人员提供了创建Maven项目的模板,同时它也可以根据已有的Maven项目生成参数化的模板。通过archetype,开发人员可以很方便地将一类项目的最佳实现应用到自己的项目中。在一个Maven项目中,开发者可以通过archetype提供的范例快速入门并了解该项目的结构与特点。
Maven Archetype由下面几个模块组成:
maven-archetype-plugin:Archetype插件。通过该插件,开发者可以在Maven中使用Archetype。
maven-archetype-plugin:Archetype插件。通过该插件,开发者可以在Maven中使用Archetype。
archetype-packaging:用于描述archetype的生命周期与构建项目软件包
archetype-models:用于描述类与引用
archetype-common:核心类
archetype-testing:用于测试Maven Archetype的内部组件
二、Archetype插件
Maven的Archetype插件让用户能够基于已有的项目骨架创建新的Maven项目,同时,该插件也可以从已有的项目中生成新的archetype。Maven项目与archetype之间的关系如下图所示:
Archetype插件有四个目标可以直接使用:
archetype:create(不推荐):从archetype 中创建一个Maven项目。
archetype:generate:从archetype 中创建一个Maven项目,需要开发人员在指定archetype,插件会从远程仓库中自动获取。
archetype:create-from-project:从已有的项目中生成archetype。
archetype:crawl:搜索并更新仓库中的archetype。
三、Archetype的使用与设计
在此我们仅介绍Maven 3的使用过程。
1、使用maven archetype来创建项目骨架
可以简单地运行:
mvn archetype:generate
紧接着会看到一段长长的输出,有很多可用的Archetype供选择。每一个Archetype前面都会对应有一个编号。同时,命令行会提示一个默认的编号,这个编号对应的Archetype为maven archetype quickstart。我们可以直接回车以选择maven archetype quickstart,紧接着Maven会提示输入maven archetype quickstart的版本,以及要创建项目的groupId、artifactId、version和包名package。如下输入并确认:
Define value for groupId: : com.juvenxu.mvnbook Define value for artifactId: : hello world Define value for version: 1.0 SNAPSHOT: : Define value for package: com.juvenxu.mvnbook: :
会得到下图所示的结果:
Archetype插件将根据我们提供的信息创建项目骨架。在上面的例子中,Archetype插件会创建一个名为hello world的子目录。从中可以看到项目的基本结构:
pom.xml:包含了必要的信息以及一个junit依赖
主代码目录src/main/java:包含了一个Java类com.juvenxu.mvnbook.helloworld.App,该类也只有一个简单的输出Hello World!的main方法
测试代码目录src/test/java:包含了一个测试用例com.juvenxu.mvnbook.helloworld.AppTest。
当然,对于有经验的开发人员来说,上述过程并不方便。在确定了archetype名称的情况下,我们也可以使用下边的命令创建Maven项目:
mvn archetype:generate -DgroupId=org.sonatype.mavenbook.ch05 -DartifactId=simple-webapp -DpackageName=org.sonatype.mavenbook.ch05 -DarchetypeArtifactId=maven-archetype-webapp
即在关键词groupId、artifactId、archetypeArtifactIdn和packageName之前加-D来定义对应的内容。
2、Archetype的设计与生成
Archetype的设计可以根据项目的需求有所变化,本文以一个简单Spring Boot应用为例,介绍archetype的生成过程。
(1)创建一个新的maven项目,把配置好的文件放到相应的目录下面
a)修改Maven配置文件pom.xml
用以下代码覆盖原文件
<?xml version="1.0" encoding="UTF-8"?> <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.midgetontoes</groupId> <artifactId>spring-boot-simple</artifactId> <version>1.0-SNAPSHOT</version> <properties> <spring.boot.version>1.1.4.RELEASE</spring.boot.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>${spring.boot.version}</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${spring.boot.version}</version> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-archetype-plugin</artifactId> <version>2.0-alpha-4</version> </plugin> </plugins> </build> </project>
可以看到,这个应用所声明的依赖很少,只有一个“org.springframework.boot:spring-boot-starter-web”,它是Spring Boot所提供的推荐的基础 POM 文件之一,用来提供创建基于Spring MVC的Web应用所需的第三方库依赖。
在添加完与Spring Boot相关的依赖以后,还需要将maven的archetype plugin添加到pom.xml中。
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-archetype-plugin</artifactId> <version>2.0-alpha-4</version> </plugin>
b)在src/main/java新建一个Application类,并加入示例代码
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @EnableAutoConfiguration public class Application { @RequestMapping("/") String home() { return "Hello World!"; } public static void main(String[] args) throws Exception { SpringApplication.run(Application.class, args); } }
代码中的Java类Application是一个简单的可以独立运行的 Web 应用。直接运行该Java 类会启动一个内嵌的Tomcat服务器运行在8080端口。访问“”可以看到页面上显示“Hello World!”。至此,一个简单的spring boot应用已经制作完成。
(2)生成archetype
打开cmd窗口,在刚才的maven项目的根目录中运行maven命令:
mvn archetype:create-from-project
(3)发布archetype
上面的步骤运行成功后,在工程的target/generated-sources/archetype目录下,会生成一个Archetype,进入这个目录。如果想要将新生成的archetype运行在本地仓库,就运行maven命令:mvn install;如果想要共享这个archetype,就使用deploy命令。
了解更多Java Web开发内容:
点击下方“阅读原文”,可以获得更多天码营教程。
以上是关于Maven Archetype的设计和使用的主要内容,如果未能解决你的问题,请参考以下文章
自定义Maven Archetype之 maven-archetype-archetype