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

news/2024/12/23 5:06:52/
目录
  • Maven简介(此部分内容为AI生成)
  • 零、下载Maven
  • 一、Maven相关系统环境变量设置
  • 二、设置Maven的本地JAR仓库位置
  • 三、设置Maven配置文件settings.xml
    • 3.1 配置本地仓库
    • 3.2 配置镜像仓库URL
    • 3.3 配置JDK版本
  • 四、在IDEA中配置maven并创建maven项目
    • 4.1 设置IDEA的全局配置
    • 4.2 在IDEA中创建maven项目
    • 4.3 创建一个使用POI处理Excel文件的maven项目
    • 4.4 使用FastExcel处理Excel文件

maven简介此部分内容为ai生成">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

Maven的官方主页为https://maven.apache.org/,可以在https://maven.apache.org/download.cgi进行下载。主页如下图所示:
点击“Download”后的Maven相关的zip文件无需安装,只要解压即可。

Maven官方主页

maven相关系统环境变量设置">一、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仓库位置

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

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

maven配置文件settingsxml">三、设置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项目">四、在IDEA中配置maven并创建maven项目

idea的全局配置">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。

idea中创建maven项目">4.2 在IDEA中创建maven项目

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

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

详见下图:

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

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

excel文件的maven项目">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文件。

excel处理excel文件">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主页上查看相关文档。

参考链接:

  • FastExcel主页

http://www.ppmy.cn/news/1557378.html

相关文章

【网络安全】用 Frida 修改软件为你所用

用 Frida 修改软件为你所用 Frida是一个强大的设备操作工具&#xff0c;它允许我们分析、修改和与运行中的应用程序交互。Frida通过在目标进程中创建一个线程&#xff0c;并通过这个线程执行一些启动代码来实现交互功能。这种交互被称为“代理”&#xff0c;它允许我们添加Jav…

uniapp 图片上传功能以及给图片添加水印

完整图片上传封装代码&#xff1a; <template><view class"add-photo"><view class"tips" v-if"title"><text class"require" v-if"require">*</text><text>{{ title }}</text>…

【libuv】Fargo信令1:client发connect消息给到server

tcp 单机测试,进行模拟 (借助copilot实现) 【Fargo】28:字节序列client发connect消息给到serverserver 收到后回复ack给到客户端程序借助copilot实现。项目构建 Console依赖于Halo.dll提供的api,Halo 依赖于 Immanuel, 运行效果 遗留问题 客户端似乎么有逻辑收到ack做处理各…

数据结构_平衡二叉树

结点类 构造函数分为有参和无参&#xff0c;相同点都是初始化树高为1 class Node { public:int data; // 用于输出int val; // 数据域&#xff0c;用于排序int height; // 树高Node* left;Node* right;Node();Node(int v, int d);static int max(int a, int b); };Node::N…

姓名详批API接口_解析姓名构成与命理特征返回json数据

姓名详批 API 接口介绍 引言 姓名在中国文化中不仅是个人的代号&#xff0c;更承载着丰富的文化内涵和命理学意义。通过分析姓名的构成&#xff0c;可以揭示个人的性格特征、运势发展及潜在的命理影响。本文将介绍一个姓名详批的 API 接口&#xff0c;提供如何通过该接口获取…

【MFC】如何修改多文档视图的标签

新建工程同之前的几篇博客 新建一个调用菜单&#xff0c;并实现其内容 以下代码演示创建时设置标题&#xff0c;并保存到子框架中 #include "MFCApplication9Doc.h" #include "MFCApplication9View.h" void CMainFrame::On32771() {CMFCApplication9Doc*…

PC寄存器(Program Counter Register)jvm

在JVM(Java虚拟机)中,PC寄存器(Program Counter Register)扮演着至关重要的角色。以下是对JVM中PC寄存器的详细解释: 一、定义与功能 定义: JVM中的PC寄存器,也被称为程序计数器,是对物理PC寄存器的一种抽象模拟。它用于存储当前线程所执行的字节码指令的地址,即指…

.NET重点

B/S C/S什么语言 B/S&#xff1a; 浏览器端&#xff1a;JavaScript&#xff0c;HTML&#xff0c;CSS 服务器端&#xff1a;ASP&#xff08;.NET&#xff09;PHP/JSP 优势&#xff1a;维护方便&#xff0c;易于升级和扩展 劣势&#xff1a;服务器负担沉重 C/S java/.NET/…