Maven简要使用说明:在IDEA中创建一个基于POI的处理Excel文件的简单Java Maven项目...

目录

Maven简介(此部分内容为AI生成)

现在大多数Java项目选择使用Maven管理,主要是因为它大大简化了项目的构建和依赖管理过程。想象一下,如果你要手动管理所有需要的库文件(即jar包),你得一个个去下载、配置,还要确保它们之间没有版本冲突------这不仅耗时而且容易出错。而Maven就像一个智能助手,它能自动帮你:

  • 下载所需的库:只要你在项目配置文件(pom.xml)中声明需要哪些库,Maven会自动从网上找到并下载这些库到你的项目中。
  • 管理依赖关系:如果某个库依赖于其他库,Maven会自动处理这些"依赖的依赖",确保一切都井然有序。
  • 编译、测试和打包:Maven有一套标准的生命周期,可以自动执行编译代码、运行测试以及打包成可部署格式(如JAR或WAR文件)等任务。
  • 保持项目结构一致:Maven鼓励遵循一种标准化的目录结构,这样无论谁接手项目,都能快速理解其布局和工作方式。
  • 团队协作更顺畅:由于所有开发者都使用相同的工具和约定,团队成员之间的合作变得更加简单高效,减少了因为环境差异带来的问题。
  • 易于集成持续集成/持续部署(CI/CD)流程:Maven与许多CI/CD工具无缝集成,使得自动化构建和发布变得轻而易举。

总的来说,Maven让开发者可以把更多时间和精力集中在编写业务逻辑上,而不是被繁琐的项目管理和构建细节所困扰。这就是为什么现代Java项目普遍采用Maven作为项目管理工具的原因。

本篇将讲解:

  • 下载、安装与配置Maven
  • 在IDEA中配置Maven
  • 在IDEA中创建一个普通的Java Maven项目
  • 在IDEA中创建一个使用第三方库(POI)的Java Maven项目

零、下载Maven

Maven的官方主页为https://maven.apache.org/,可以在https://maven.apache.org/download.cgi进行下载。主页如下图所示:

点击**"Download"**后的Maven相关的zip文件无需安装,只要解压即可。

一、Maven相关系统环境变量设置

  1. Windows下打开系统环境变量 ,在其中新建MAVEN_HOME变量,值为maven安装目录\bin,如(D:\apache-maven-3.9.9\bin);
  2. 在环境变量PATH中添加%MAVEN_HOME%
  3. 在命令行下执行mvn -n,查看是否安装成功。

详见下三图:

二、设置Maven的本地JAR仓库位置

**说明:**需要指定一个目录为Maven Jar仓库的本地存储位置。

新建:D:\jarstore\repository目录。

三、设置Maven配置文件settings.xml

Maven安装目录\conf下的settings.xml文件中包含很多maven设置。主要配置:

  1. 本地Jar仓库地址 :前面创建的D:\jarstore\repository目录;
  2. 镜像仓库URL:Maven官方主仓库速度较慢,所以建议配置国内的Maven镜像仓库URL。
  3. JDK版本:比如Java 17.

说明: 可以在阿里云Maven中央仓库网址查询最新的阿里云镜像仓库URL。

说明: 阿里云镜像仓库URL(2024-12-17查询):https://maven.aliyun.com/repository/central

3.1 配置本地仓库

在settings.xml文件中大约在53行 附近添加如下配置信息: <localRepository>D:/jarstore/repository</localRepository>

详见下图:

3.2 配置镜像仓库URL

在settings.xml文件中 附近添加如下配置信息:

复制代码
<mirror>
    <id>alimaven</id>
    <mirrorOf>central</mirrorOf>
    <name>aliyun maven</name>
    <url>https://maven.aliyun.com/repository/central</url>
</mirror>

详见下图:

3.3 配置JDK版本

在 与 之间添加如下配置信息:

复制代码
<!-- java版本 -->
<profile>
	<id>jdk-17</id>
	<activation>
		<activeByDefault>true</activeByDefault>
		<jdk>17</jdk>
	</activation>
	<properties>
		<maven.compiler.source>17</maven.compiler.source>
		<maven.compiler.target>17</maven.compiler.target>
		<maven.compiler.compilerVersion>17</maven.compiler.compilerVersion>
	</properties>
</profile>

详见下图:

四、在IDEA中配置maven并创建maven项目

4.1 设置IDEA的全局配置

如果打开IDEA发现已经打开了某个项目,需要关闭该项目(Close Project),打开IDEA全局设置界面。详见下图:

点击Customize->点击All settings...->选择Build, Execution, Deployment->Build Tools->Maven。主要设置如下三个配置:

  1. Maven home path:设置为Maven的安装目录,如D:\apache-maven-3.9.9
  2. User settings file:选择Override,然后选择按目录下的setting.xml,如D:\apache-maven-3.9.9\conf\settings.xml
  3. Local respository:保证里面的值为你刚才创建的本地Jar仓库的目录路径,如D:\jarstore\repository

详见下图:

注意:设置完后一定要保存、应用,然后重启IDEA。

4.2 在IDEA中创建maven项目

如果只是创建一个普通的Java项目,可以在New Project中选择Java,然后点选maven,选择正确的JDK版本,与刚才设置的要一致如JDK 21。

然后在Advanced Settings进行如下设置:

  • GroupID: 为组织名称,如jmu.net
  • ArtifactId:为项目名称,如mvnprj01

详见下图:

注意:第一次创建Maven项目需要下载相关插件、jar包,所以速度比较慢,请耐心等候。

成功创建Maven项目后,可在该项目中看见maven的pom.xml文件。详见下图:

4.3 创建一个使用POI处理Excel文件的maven项目

需要先在项目的pom.xml中添加如下依赖(即,下载相应的库)。可以询问AI"想要使用POI处理Excel的.xls文件,给我一个参考的pom.xml例子",然后找出其中相关的 信息。例子如下:

复制代码
<dependencies>
    <!-- Apache POI for Excel files -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>5.2.3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>5.2.3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml-schemas</artifactId>
        <version>4.1.2</version> <!-- 注意:此版本可能需要根据最新情况进行调整 -->
    </dependency>
    <!-- xmlbeans is required for xlsx support -->
    <dependency>
        <groupId>org.apache.xmlbeans</groupId>
        <artifactId>xmlbeans</artifactId>
        <version>5.1.1</version>
    </dependency>
    <!-- commons-collections4 is used by POI -->
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-collections4</artifactId>
        <version>4.4</version>
    </dependency>
    <!-- commons-compress is used by POI for zip file manipulation -->
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-compress</artifactId>
        <version>1.21</version>
    </dependency>
    <!-- dom4j is used by POI for XML processing -->
    <dependency>
        <groupId>org.dom4j</groupId>
        <artifactId>dom4j</artifactId>
        <version>2.1.3</version>
    </dependency>
</dependencies>

详见下图:

保存以后,需要一些时间下载相关的jar库,需耐心等待一段时间。也可以手动让其重新解析pom.xml文件(右键点击pom.xml->点击Run Maven->点击Reimport)进行下载

如果出现类似Dependency 'xxx' not found这个错误,有可能是相关的jar文件还没下载下来,也有可能是镜像仓库的URL设置错误,或者 相关的配置信息有误。也可以尝试询问AI 提示Dependency 'xxx' not found,有可能是版本问题,请重新给一个稳定版本的<dependency>示例

接下载,询问AI"给我一个简单的使用POI创建xlsx文件的例子",然后在项目中创建相应的.java源代码文件。如:

复制代码
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileOutputStream;
import java.io.IOException;

public class CreateExcel {

    public static void main(String[] args) {
        // 创建一个新的工作簿
        try (Workbook workbook = new XSSFWorkbook()) {
            // 创建一个工作表
            Sheet sheet = workbook.createSheet("Example Sheet");

            // 一些示例数据
            Object[][] bookData = {
                {"Head First Java", "Kathy Sierra", 79},
                {"Effective Java", "Joshua Bloch", 36},
                {"Clean Code", "Robert C. Martin", 54},
                {"Thinking in Java", "Bruce Eckel", 35}
            };

            int rowCount = 0;

            // 创建字体样式
            Font headerFont = workbook.createFont();
            headerFont.setBold(true);
            headerFont.setFontHeightInPoints((short) 14);
            headerFont.setColor(IndexedColors.RED.getIndex());

            // 创建单元格样式
            CellStyle headerCellStyle = workbook.createCellStyle();
            headerCellStyle.setFont(headerFont);

            // 创建标题行
            Row headerRow = sheet.createRow(rowCount++);
            for (int i = 0; i < bookData[0].length; i++) {
                Cell cell = headerRow.createCell(i);
                cell.setCellValue("Column " + (i + 1));
                cell.setCellStyle(headerCellStyle);
            }

            // 填充数据行
            for (Object[] aBook : bookData) {
                Row row = sheet.createRow(rowCount++);
                int columnCount = 0;
                Cell cell = row.createCell(columnCount++);
                cell.setCellValue((String) aBook[0]);

                cell = row.createCell(columnCount++);
                cell.setCellValue((String) aBook[1]);

                cell = row.createCell(columnCount);
                cell.setCellValue((Integer) aBook[2]);
            }

            // 自动调整列宽
            for (int i = 0; i < bookData[0].length; i++) {
                sheet.autoSizeColumn(i);
            }

            // 将工作簿写入文件输出流
            try (FileOutputStream fileOut = new FileOutputStream("workbook.xlsx")) {
                workbook.write(fileOut);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

尝试运行,看能否成功。如果成功后,将在IDEA项目根目录下看到workbook.xlsx文件。

4.4 使用FastExcel处理Excel文件

FastExcel前身是阿里巴巴的EasyExcel,相比较POI来说占用内存更少、速度更快、依赖更简单。

FastExcel对应的依赖为:

复制代码
<dependency>
    <groupId>cn.idev.excel</groupId>
    <artifactId>fastexcel</artifactId>
    <version>1.0.0</version>
</dependency>

参考代码:

java 复制代码
import cn.idev.excel.EasyExcel;

import java.util.ArrayList;
import java.util.List;

public class FastExcelExample {

    public static void main(String[] args) {
        // 文件路径
        String fileName = "example.xlsx";
        
        // 写入数据类
        List<UserData> list = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            UserData data = new UserData();
            data.setName("Name" + i);
            data.setAge(i);
            list.add(data);
        }
        
        // 一次性写出内容到文件
        EasyExcel.write(fileName, UserData.class)
                .sheet("Sheet1")
                .doWrite(list);
    }

    // 定义数据类,字段需与Excel列对应
    public static class UserData {
        private String name;
        private Integer age;

        // getter和setter方法
        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public Integer getAge() {
            return age;
        }

        public void setAge(Integer age) {
            this.age = age;
        }
    }
}

注意:FastExcel相对较新,网上相应文档也比较少。如果询问AI让其生成相关 信息或示例源代码文件,可能会给出错误的信息。建议到FastExcel主页上查看相关文档。

参考链接:

相关推荐
腥臭腐朽的日子熠熠生辉23 分钟前
解决maven失效问题(现象:maven中只有jdk的工具包,没有springboot的包)
java·spring boot·maven
ejinxian24 分钟前
Spring AI Alibaba 快速开发生成式 Java AI 应用
java·人工智能·spring
杉之30 分钟前
SpringBlade 数据库字段的自动填充
java·笔记·学习·spring·tomcat
圈圈编码1 小时前
Spring Task 定时任务
java·前端·spring
俏布斯1 小时前
算法日常记录
java·算法·leetcode
27669582921 小时前
美团民宿 mtgsig 小程序 mtgsig1.2 分析
java·python·小程序·美团·mtgsig·mtgsig1.2·美团民宿
爱的叹息1 小时前
Java 连接 Redis 的驱动(Jedis、Lettuce、Redisson、Spring Data Redis)分类及对比
java·redis·spring
程序猿chen1 小时前
《JVM考古现场(十五):熵火燎原——从量子递归到热寂晶壁的代码涅槃》
java·jvm·git·后端·java-ee·区块链·量子计算
松韬2 小时前
Spring + Redisson:从 0 到 1 搭建高可用分布式缓存系统
java·redis·分布式·spring·缓存
绝顶少年2 小时前
Spring Boot 注解:深度解析与应用场景
java·spring boot·后端