Skip to content

2 Backend Environment Setup

Goal

  • Setup the development environment for the project on your local labtop/desktop
  • Create and start a tomcat server on you local
  • Create a web project and add it to your tomcat server.

JDK: openjdk-21

Screenshot 2023-10-23 at 15.55.35

Screenshot 2023-10-23 at 15.56.02

If encounter

Cannot run program "/Users/eve/Desktop/Projects/OnlineOrder/Restaurant-Website/Code/apache-tomcat-11.0.0-M13/bin/catalina.sh" (in directory "/Users/eve/Desktop/Projects/OnlineOrder/Restaurant-Website/Code/apache-tomcat-11.0.0-M13/bin"): error=13, Permission denie

Screenshot 2023-10-23 at 15.52.34

Screenshot 2023-10-23 at 15.59.33

Screenshot 2023-10-23 at 15.59.57

Screenshot 2023-10-23 at 16.01.41

Maven

In this project we use Maven to mange build configurations and dependencies. A pom.xml is the manifest file for Maven. It is the configuration of how the project is compiled, with what dependencies.

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>   
   # modelVersion 指的是 POM 的版本,这通常是 4.0.0.
   # 基本信息
    <groupId>com.example</groupId>
    <artifactId>OnlineOrder</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>OnlineOrder</name>
    <packaging>war</packaging>
  # 这部分描述了项目的基本信息:
  # groupId: 项目组的标识符,通常是公司或组织的域名反转。
  # artifactId: 项目的标识符,通常是项目的名称。
  # version: 项目的当前版本。
  # name: 项目的展示名称。
  # packaging: 打包类型,这里是 war,意味着这个项目会被打包成一个 web 应用程序归档文件。

  # 属性
  # 这部分定义了一些常用的属性,以便在配置文件中多次引用
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.target>11</maven.compiler.target>
        <maven.compiler.source>11</maven.compiler.source>
        <junit.version>5.9.2</junit.version>
    </properties>

    # 依赖关系这部分列出了项目所需的所有依赖关系。
    # 例如,这个项目依赖于 jakarta.servlet-api  junit-jupiter-api
    <dependencies>   
        <dependency>
            <groupId>jakarta.servlet</groupId>
            <artifactId>jakarta.servlet-api</artifactId>
            <version>6.0.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    # 构建配置
     # 这部分定义了项目的构建配置,例如使用哪些插件来构建项目。在这个例子中,我们使用了 maven-war-plugin 插件,它帮助我们将项目打包成 war 文件
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.3.2</version>
            </plugin>
        </plugins>
    </build>
</project>

Maven 是一个流行的项目管理和自动化构建工具,主要用于 Java 项目。它帮助开发者在整个软件开发周期中进行项目的构建、依赖管理、文档生成等任务。

下面是 Maven 的一些核心特性和功能:

  1. 依赖管理: Maven 使用一个名为 pom.xml 的文件来描述项目信息和依赖。当你需要一个库,只需在 pom.xml 中添加相应的依赖,Maven 将自动从中央仓库下载并添加到项目中。
  2. 生命周期和插件: Maven 定义了一系列的构建生命周期(如 compile, test, package),每个生命周期阶段都与特定的任务相关联。通过插件,Maven 可以扩展这些任务。
  3. 项目坐标: 每个 Maven 项目和依赖都由三个主要坐标定义:groupId(通常代表组织或公司),artifactId(项目名称),以及 version(项目版本)。
  4. 中央仓库: Maven 使用中央仓库来存储和分享公共库。这使得依赖管理变得非常简单,因为开发者不再需要手动下载和管理 JAR 文件。
  5. 项目模板(Archetypes): Maven 提供了项目模板功能,使得开发者可以快速开始一个新项目,如创建一个标准的 Java 应用、Web 应用等。
  6. 多模块项目: 对于大型项目,Maven 支持创建多模块项目,其中每个模块都有自己的 pom.xml 文件,但所有模块都可以一起构建。
  7. 统一的构建过程: 不论项目大小,Maven 提供了一个统一的构建流程,这使得开发者在不同的项目中都能用相同的方式进行构建。
  8. 其它: Maven 还有许多其他功能,如生成项目报告、文档、集成测试等。

总的来说,Maven 是 Java 开发者的一个强大工具,它简化了项目构建和依赖管理的复杂性。