当前位置: 首页 > article >正文

6- 【JavaWeb】Maven管理项目

Apache Maven 是一个流行的构建自动化工具,用于 Java 项目的构建、管理和依赖处理。Maven 使用 XML 配置文件 pom.xml 来管理项目的构建过程和依赖关系。

1. 项目结构

一个标准的 Maven 项目结构如下:

my-maven-project/
├── src/
│   ├── main/
│   │   ├── java/                   # Java 源代码
│   │   ├── resources/              # 资源文件,如配置文件
│   ├── test/
│   │   ├── java/                   # 测试代码
│   │   ├── resources/              # 测试资源文件
├── target/                         # 编译生成的文件(自动生成)
├── pom.xml                         # Maven 项目配置文件
  • src/main/java:存放项目的 Java 源代码。
  • src/main/resources:存放项目的资源文件,如配置文件。
  • src/test/java:存放测试代码。
  • src/test/resources:存放测试资源文件。
  • target:存放编译和打包生成的文件(自动生成)。

2. 依赖导入

在 Maven 中,依赖通过 pom.xml 文件中的 <dependencies> 元素进行管理。以下是如何添加一个依赖的示例:

<dependencies>
    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>31.1-jre</version>
    </dependency>
</dependencies>
  • groupId:依赖的组 ID。
  • artifactId:依赖的项目 ID。
  • version:依赖的版本号。

3. 依赖作用域

Maven 允许为依赖设置不同的作用域,影响它们在编译、测试和运行时的可见性。

  • compile(默认):编译、测试和运行时都可用。
  • test:仅在测试时可用。
  • provided:编译和测试时可用,但不包括在最终打包中(通常用于 Servlet API 等容器提供的库)。
  • runtime:运行时可用,但编译时不可用。
  • system:需要显式提供系统范围的 JAR 文件(不推荐)。
<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13.2</version>
        <scope>test</scope>
    </dependency>
</dependencies>

4. 可选依赖

可选依赖是指不是强制要求的依赖,仅在某些条件下需要。通过 <optional> 元素来标记:

<dependencies>
    <dependency>
        <groupId>com.example</groupId>
        <artifactId>optional-dependency</artifactId>
        <version>1.0</version>
        <optional>true</optional>
    </dependency>
</dependencies>

5. 排除依赖

在有些情况下,你可能需要排除传递性依赖(即依赖的依赖)。可以通过 <exclusions> 元素排除不需要的依赖:

<dependencies>
    <dependency>
        <groupId>com.example</groupId>
        <artifactId>example-dependency</artifactId>
        <version>1.0</version>
        <exclusions>
            <exclusion>
                <groupId>org.unwanted</groupId>
                <artifactId>unwanted-library</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

6. 继承关系

Maven 支持项目继承,使得子项目可以继承父项目的配置。在 pom.xml 中通过 <parent> 元素指定父项目。

pom.xml 示例:

<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>parent-project</artifactId>
    <version>1.0</version>
    <packaging>pom</packaging>

    <dependencyManagement>
        <dependencies>
            <!-- 父项目中的依赖版本管理 -->
            <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>31.1-jre</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

pom.xml 示例:

<project>
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.example</groupId>
        <artifactId>parent-project</artifactId>
        <version>1.0</version>
    </parent>

    <artifactId>child-project</artifactId>

    <dependencies>
        <!-- 子项目中的依赖 -->
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
        </dependency>
    </dependencies>
</project>

7. 常用命令

  • 编译项目

    mvn compile
    
  • 运行测试

    mvn test
    
  • 打包项目

    mvn package
    
  • 安装到本地仓库

    mvn install
    
  • 清理目标目录

    mvn clean
    
  • 生成项目文档

    mvn site
    

8. 测试项目

Maven 使用 src/test/java 目录来存放测试代码。你可以通过 JUnit 或 TestNG 等框架编写测试用例。

示例测试类:

import org.junit.Assert;
import org.junit.Test;

public class MyServiceTest {

    @Test
    public void testPerformAction() {
        MyService service = new MyService();
        String result = service.performAction();
        Assert.assertEquals("Expected result", result);
    }
}

使用 Maven 运行测试:

mvn test

9. 打包项目

Maven 默认将项目打包成 JAR 文件。如果你想生成其他类型的包(如 WAR 文件),需要在 pom.xml 中配置 packaging 元素。

打包为 JAR 文件:

<packaging>jar</packaging>

打包为 WAR 文件:

<packaging>war</packaging>

运行打包命令:

mvn package

生成的文件通常会放在 target 目录下。


总结

  • 项目结构:Maven 项目有标准的目录结构,包括 src/main/javasrc/test/javatarget
  • 依赖管理:通过 pom.xml 管理项目依赖,包括依赖导入、作用域、可选依赖、排除依赖等。
  • 继承关系:支持项目继承,父项目可以提供共享的配置和依赖。
  • 常用命令:包括编译、测试、打包、安装等操作。
  • 测试项目:使用 Maven 和 JUnit 进行单元测试。
  • 打包项目:通过 Maven 打包项目为 JAR 或 WAR 文件。

通过 Maven,你可以有效地管理项目依赖、构建过程和项目结构,提高开发效率。


http://www.kler.cn/a/304720.html

相关文章:

  • 28.医院管理系统(基于springboot和vue)
  • Systemd: disable和mask的区别
  • EasyExcel 使用多线程按顺序导出数据
  • dapp获取钱包地址,及签名
  • WPF中MVVM工具包 CommunityToolkit.Mvvm
  • 算法训练(leetcode)二刷第二十三天 | 455. 分发饼干、*376. 摆动序列、53. 最大子数组和
  • html+css+js网页设计 旅游 厦门旅游网11个页面
  • K8s利用etcd定时备份集群结合钉钉机器人通知
  • MySQL下载安装
  • 数据备份和迁移-—SAAS本地化及未来之窗行业应用跨平台架构
  • 关于单片机的【汇编指令系统】
  • 数学建模常用模型全面总结(含适用条件、优点、局限性和应用场景)
  • 鸿蒙轻内核A核源码分析系列七 进程管理 (1)
  • django orm增删改查操作
  • 如何理解深度学习的训练过程
  • B站宋红康JAVA基础视频教程(chapter14数据结构与集合源码)
  • 图文检索(1):Rethinking Benchmarks for Cross-modal Image-text Retrieval
  • DORIS - DORIS之倒排索引
  • 【实践】应用访问Redis突然超时怎么处理?
  • FastAPI 应用安全加固:HTTPSRedirectMiddleware 中间件全解析
  • OpenStack × OceanBase: 打造高可用可扩展的基础设施平台
  • ARM驱动学习之4小结
  • Docker高级管理--Compose容器编排与私有仓库(Docker技术集群与应用)
  • 使用Spring Boot集成Nacos进行配置管理
  • rocky8安装docker步骤
  • Apple Watch Series 10 動手玩:更大、更輕、更薄