项目结构:
多项目,父模块:maven-learning,子模块:maven-webapp,test-module
1. 父模块 pom.xml添加SpringBoot依赖
需要添加两处:
<!--SpringBoot 需要继承的父工程-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.1.10</version>
<relativePath/>
</parent>
<!--web开发需要的依赖-->
<dependencies>
<!-- Spring Boot Web Starter -->
<!--web开发需要的依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
Tips:注意,此处父模块 <packaging>pom</packaging>为pom,意味着该项目不会生成 .jar 或 .war 文件,而是一个纯粹的聚合项目,通常用于包含多个子模块或共享依赖管理、插件管理配置的父项目。
- jar:
这是默认的 packaging 类型,用于生成 Java 的 .jar 文件。通常适用于 Java 库或可运行的应用程序。
示例:用于打包一个 Java 库或独立的 Java 应用程序。 - war:
生成一个 Web 应用程序的 .war 文件,适用于 Java Web 应用程序(通常用于部署到 Servlet 容器如 Tomcat)。
示例:用于打包一个 Spring MVC 或 Spring Boot 的 Web 应用程序。 - pom:
这表示该项目是一个父项目或聚合项目。它不会生成可运行的文件,而是用于管理子模块或定义依赖管理、插件管理等配置。
示例:用于管理一个多模块项目,定义所有模块的通用配置。
子模块test-module的packaging类型即为jar, maven-webapp即为war。
maven-learning的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>org.example</groupId>
<artifactId>maven-learning</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<!--SpringBoot 需要继承的父工程-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.1.10</version>
<relativePath/>
</parent>
<modules>
<module>test-module</module>
<module>maven-webapp</module>
</modules>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- Spring Boot Web Starter -->
<!--web开发需要的依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<!-- <build>-->
<!-- <plugins>-->
<!-- <plugin>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-maven-plugin</artifactId>-->
<!-- </plugin>-->
<!-- </plugins>-->
<!-- </build>-->
</project>
test-module的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>
<parent>
<groupId>org.example</groupId>
<artifactId>maven-learning</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>test-module</artifactId>
<packaging>jar</packaging>
<name>test-module</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>
maven-webapp的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>
<parent>
<groupId>org.example</groupId>
<artifactId>maven-learning</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>maven-webapp</artifactId>
<packaging>war</packaging>
<name>maven-webapp 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>maven-webapp</finalName>
<!-- <plugins>-->
<!-- <plugin>-->
<!-- <!– https://mvnrepository.com/artifact/org.apache.tomcat.maven/tomcat7-maven-plugin –>-->
<!-- <groupId>org.apache.tomcat.maven</groupId>-->
<!-- <artifactId>tomcat7-maven-plugin</artifactId>-->
<!-- <version>2.2</version>-->
<!-- </plugin>-->
<!-- </plugins>-->
</build>
</project>
2. 编写Controller类和启动类
在test-module中,编写HelloController类和HelloApplication类。项目结构见文章首图。编写代码如下。
HelloController:
package org.example.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@RequestMapping("/hello")
public String Hello(){
return ("Hello World");
}
}
HelloApplication:
package org.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* 引导类 SpringBoot项目的入口
*/
@SpringBootApplication
public class HelloApplication {
public static void main(String[] args) {
SpringApplication.run(HelloApplication.class, args);
}
}
3. 运行HelloApplication类,启动项目
启动项目,控制台打印输出如图。(SpringBoot内嵌Tomcat)
项目默认运行在8080端口,浏览器输入localhost:8080/hello,即可看到打印输出"Hello World"。