maven - archetype - quickstart 和maven - archetype - archetype 和maven - archetype - webapp 区别是什么?

maven - archetype - quickstart 和maven - archetype - archetype区别

  1. 功能重点不同

    • maven - archetype - quickstart:主要功能是快速搭建一个简单的、可运行的 Java 应用程序框架。它的重点在于让开发者能够迅速开始编写 Java 代码,构建一个基本的、能够独立运行的程序,例如一个简单的命令行工具或者小型的应用程序。
    • maven - archetype - archetype:重点在于创建一个可以作为其他 Maven 项目模板的项目。它不是直接用于构建普通的 Java 应用程序,而是用于构建一个模板,这个模板可以被其他开发者用来创建具有特定结构和功能的 Maven 项目。
  2. 项目结构差异

    • maven - archetype - quickstart
      • 结构相对简单直接。有src/main/java用于存放主代码,src/test/java用于存放测试代码。典型的代码布局如一个简单的App类及其对应的AppTest类。例如,在src/main/java中的App类可能就是一个简单的打印 “Hello World” 的程序,代码如下:
package com.mycompany.app;
public class App {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}
  • 资源文件方面,只提供了基本的 Java 代码结构所需的目录,如src/main/resourcessrc/test/resources,但通常没有复杂的资源文件配置。
  • maven - archetype - archetype
    • 结构更复杂。它有专门用于模板相关文件的目录,如src/main/resources/META - INF/maven/archetype - resources,这些目录中的文件会在使用该模板创建新的 Maven 项目时作为模板文件被复制到新的项目中。
    • 还会有用于定义模板参数的文件,如src/main/resources/META - INF/maven/archetype - metadata.xml,用于指定模板的各种参数,包括参数名称、默认值、是否必填等信息。
  1. pom.xml 配置差异
    • maven - archetype - quickstart
      • pom.xml相对简洁,主要包含项目的基本信息,如groupIdartifactIdversion等坐标信息。也会包含一些基本的构建配置,如编译器插件配置等,确保 Java 代码能够正常编译。例如,一个简单的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 - 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 - quickstartmaven - archetype - archetype是不一样的,它们在功能、项目结构和pom.xml配置等方面都存在明显的差异。

maven - archetype - quickstart 和maven - archetype - webapp区别

  1. 项目类型与用途

    • maven - archetype - quickstart
      • 主要用于创建简单的 Java 应用程序。通常是那种在命令行环境下运行的程序,例如一些工具类程序、简单的算法演示程序等。这种项目的重点在于 Java 代码的编写和执行,不涉及 Web 相关的内容。
    • maven - archetype - webapp
      • 用于创建基于 Java 的 Web 应用程序。它是构建 Web 项目的基础模板,适合开发各种类型的 Web 应用,如网站、Web 服务等。这些 Web 应用会通过浏览器或者其他 HTTP 客户端来访问。
  2. 项目结构差异

    • maven - archetype - quickstart
      • 基本的项目结构包括src/main/java(存放主 Java 代码)、src/test/java(存放测试 Java 代码)、src/main/resources(存放主代码所需的资源文件)和src/test/resources(存放测试代码所需的资源文件)。例如,在src/main/java中有一个简单的 Java 类,可能是一个打印 “Hello World” 的类,如下所示:
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/javasrc/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>
  1. pom.xml 配置差异
    • maven - archetype - quickstart
      • pom.xml配置相对简单,主要关注 Java 应用程序的构建。它包含基本的项目坐标信息(groupIdartifactIdversion),以及可能的一些基本依赖,如用于测试的 JUnit 等。例如:
<?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文件。

posted @ 2024-12-15 10:44  哩个啷个波  阅读(10)  评论(0编辑  收藏  举报