1. 模块化开发
模块化开发是将大型应用程序拆分成多个小模块的过程,每个模块负责不同的功能。这有助于降低系统复杂性,提高代码的可维护性和可扩展性。
2. 聚合模块
聚合模块(父模块)用于组织和管理多个子模块。它定义了项目的全局配置,如依赖、插件等,使得子模块可以继承这些配置。
示例代码
父模块 pom.xml
:
XML
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>parent-module</artifactId>
<packaging>pom</packaging>
<modules>
<module>module-a</module>
<module>module-b</module>
</modules>
<properties>
<java.version>1.8</java.version>
<spring.version>5.3.10</spring.version>
</properties>
<dependencyManagement>
<dependencies>
<!-- 定义版本号,子模块继承后无需再定义版本号 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
子模块 module-a/pom.xml
:
XML
<project>
<parent>
<groupId>com.example</groupId>
<artifactId>parent-module</artifactId>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>module-a</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
3. Maven 插件管理
在父模块中定义 <pluginManagement>
,子模块可以引用这些插件,而不需要重复定义插件版本。
父模块 pom.xml
:
XML
<pluginManagement>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.4.5</version>
</plugin>
</plugins>
</pluginManagement>
子模块将自动继承这些插件配置。
4. 自定义属性
在父模块中定义 <properties>
标签,可以在所有子模块中使用这些属性。
父模块 pom.xml
:
XML
<properties>
<project.basedir>${project.basedir}</project.basedir>
<properties>
子模块 module-a/pom.xml
:
XML
<build>
<resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
<filtering>false</filtering>
</resource>
</resources>
</build>
5. 版本管理
在父模块中统一管理依赖的版本号。
父模块 pom.xml
:
XML
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
6. 多环境配置
通过定义不同的配置文件,可以适应不同的运行环境。
父模块 pom.xml
:
XML
<profiles>
<profile>
<id>dev</id>
<properties>
<active.profile>dev</active.profile>
</properties>
</profile>
</profiles>
子模块 application-dev.yml
:
XML
server:
port: 8081
spring:
datasource:
url: jdbc:mysql://localhost:3306/dev_db?useUnicode=true&characterEncoding=UTF-8&useSSL=false
7. 跳过测试
在 Maven 中,可以通过配置 maven-surefire-plugin
来跳过测试。
父模块 pom.xml
:
XML
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-sure-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
8. 私服配置
在 Maven 中配置私服(如 Nexus)可以方便管理依赖和插件。
settings.xml:
XML
<servers>
<server>
<id>nexus-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
pom.xml:
XML
<repositories>
<repository>
<id>nexus-releases</id>
<url><http://localhost:8081/nexus/content/repositories/releases/></url>
</repository>
<repositories>
9. 资源上传
将构建的 JAR 文件上传到私服,可以在 pom.xml
中配置 maven-deploy-plugin
插件。
pom.xml:
XML
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<repositoryId>nexus-releases</repositoryId>
<url><http://localhost:8081/nexus/content/repositories/releases/></url>
</configuration>
</plugin>
</plugins>
</build>
总结
模块化开发和 Maven 的使用可以提高项目的可维护性和可扩展性。通过聚合和继承,可以简化项目的构建和配置管理。同时,Maven 提供的多环境配置、跳过测试、私服配置等功能,使得项目可以更好地适应不同的开发和运行环境。