maven - archetype - quickstart 和maven - archetype - archetype 和maven - archetype - webapp 区别是什么?
maven - archetype - quickstart 和maven - archetype - archetype区别
-
功能重点不同
- maven - archetype - quickstart:主要功能是快速搭建一个简单的、可运行的 Java 应用程序框架。它的重点在于让开发者能够迅速开始编写 Java 代码,构建一个基本的、能够独立运行的程序,例如一个简单的命令行工具或者小型的应用程序。
- maven - archetype - archetype:重点在于创建一个可以作为其他 Maven 项目模板的项目。它不是直接用于构建普通的 Java 应用程序,而是用于构建一个模板,这个模板可以被其他开发者用来创建具有特定结构和功能的 Maven 项目。
-
项目结构差异
- maven - archetype - quickstart:
- 结构相对简单直接。有
src/main/java
用于存放主代码,src/test/java
用于存放测试代码。典型的代码布局如一个简单的App
类及其对应的AppTest
类。例如,在src/main/java
中的App
类可能就是一个简单的打印 “Hello World” 的程序,代码如下:
- 结构相对简单直接。有
- maven - archetype - quickstart:
package com.mycompany.app;
public class App {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
- 资源文件方面,只提供了基本的 Java 代码结构所需的目录,如
src/main/resources
和src/test/resources
,但通常没有复杂的资源文件配置。 - maven - archetype - archetype:
- 结构更复杂。它有专门用于模板相关文件的目录,如
src/main/resources/META - INF/maven/archetype - resources
,这些目录中的文件会在使用该模板创建新的 Maven 项目时作为模板文件被复制到新的项目中。 - 还会有用于定义模板参数的文件,如
src/main/resources/META - INF/maven/archetype - metadata.xml
,用于指定模板的各种参数,包括参数名称、默认值、是否必填等信息。
- 结构更复杂。它有专门用于模板相关文件的目录,如
- pom.xml 配置差异
- maven - archetype - quickstart:
pom.xml
相对简洁,主要包含项目的基本信息,如groupId
、artifactId
、version
等坐标信息。也会包含一些基本的构建配置,如编译器插件配置等,确保 Java 代码能够正常编译。例如,一个简单的pom.xml
可能如下:
- maven - archetype - quickstart:
<?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.example</groupId>
<artifactId>my - maven - project</artifactId>
<version>1.0 - SNAPSHOT</version>
<name>my - maven - project</name>
<description>My first Maven project</description>
<dependencies>
<!-- 可能会有一些基本的测试依赖 -->
</dependencies>
</project>
- maven - archetype - archetype:
pom.xml
更加复杂,除了包含基本的项目信息外,还会有大量与模板制作和发布相关的配置。例如,会包含插件配置用于将模板打包成archetype - catalog.xml
文件,以便在 Maven 仓库中发布和共享。还会有配置用于处理模板的参数化,使得使用该模板创建新的 Maven 项目时能够根据用户输入的参数来定制项目结构。
所以,maven - archetype - quickstart
和maven - archetype - archetype
是不一样的,它们在功能、项目结构和pom.xml
配置等方面都存在明显的差异。
maven - archetype - quickstart 和maven - archetype - webapp区别
-
项目类型与用途
- maven - archetype - quickstart:
- 主要用于创建简单的 Java 应用程序。通常是那种在命令行环境下运行的程序,例如一些工具类程序、简单的算法演示程序等。这种项目的重点在于 Java 代码的编写和执行,不涉及 Web 相关的内容。
- maven - archetype - webapp:
- 用于创建基于 Java 的 Web 应用程序。它是构建 Web 项目的基础模板,适合开发各种类型的 Web 应用,如网站、Web 服务等。这些 Web 应用会通过浏览器或者其他 HTTP 客户端来访问。
- maven - archetype - quickstart:
-
项目结构差异
- maven - archetype - quickstart:
- 基本的项目结构包括
src/main/java
(存放主 Java 代码)、src/test/java
(存放测试 Java 代码)、src/main/resources
(存放主代码所需的资源文件)和src/test/resources
(存放测试代码所需的资源文件)。例如,在src/main/java
中有一个简单的 Java 类,可能是一个打印 “Hello World” 的类,如下所示:
- 基本的项目结构包括
- maven - archetype - quickstart:
package com.mycompany.app;
public class App {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
- 没有 Web 相关的目录和文件结构,如 Web 页面文件(
.html
、.jsp
等)的存放位置、配置文件(如web.xml
)等。 - maven - archetype - webapp:
- 除了包含类似
maven - archetype - quickstart
中的src/main/java
和src/test/java
等目录用于存放 Java 代码外,还有一些 Web 特定的目录。 - 它有
src/main/webapp
目录,用于存放 Web 相关的文件。在这个目录下通常会有WEB - INF
目录,WEB - INF
目录中有web.xml
文件(在 Servlet 3.0 + 规范下,web.xml
可能不是必需的,但仍然是常见的配置文件),用于配置 Web 应用的部署描述符,如 Servlet、Filter 和 Listener 的配置等。同时,src/main/webapp
目录还可以存放 Web 页面文件,如index.html
、.jsp
文件等,这些文件是用户通过浏览器访问 Web 应用时直接看到的内容。例如,一个简单的index.html
文件可能如下:
- 除了包含类似
<!DOCTYPE html>
<html>
<head>
<title>My Web App</title>
</head>
<body>
<h1>Welcome to my web app!</h1>
</body>
</html>
- pom.xml 配置差异
- maven - archetype - quickstart:
pom.xml
配置相对简单,主要关注 Java 应用程序的构建。它包含基本的项目坐标信息(groupId
、artifactId
、version
),以及可能的一些基本依赖,如用于测试的 JUnit 等。例如:
- maven - archetype - quickstart:
<?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.example</groupId>
<artifactId>my - maven - project</artifactId>
<version>1.0 - SNAPSHOT</version>
<name>my - maven - project</name>
<description>My first Maven project</description>
<dependencies>
<!-- 可能包含基本的测试依赖,如JUnit -->
</dependencies>
</project>
- maven - archetype - webapp:
pom.xml
配置更加复杂,因为它需要考虑 Web 应用的构建和部署。除了基本的项目坐标信息外,还会包含与 Web 相关的插件和依赖。- 例如,它会包含打包成
war
(Web Application Archive)文件的配置,这是 Web 应用部署的常见格式。同时,可能会包含与 Web 服务器(如 Tomcat)兼容的依赖,如 Servlet API 等。以下是一个简化的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.example</groupId>
<artifactId>my - web - app</artifactId>
<version>1.0 - SNAPSHOT</version>
<packaging>war</packageing>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet - api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven - war - plugin</artifactId>
<version>3.3.2</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
</project>
在这个pom.xml
示例中,<packaging>
标签设置为war
,表示要将项目打包成war
文件。<dependencies>
部分包含了 Servlet API 的依赖,<scope>provided</scope>
表示这个依赖在运行时由 Web 服务器提供。<build>
部分包含了maven - war - plugin
的配置,用于正确地打包war
文件。