目录
Maven简介(AI生成的内容)
现在大多数Java项目选择使用Maven管理,主要是因为它大大简化了项目的构建和依赖管理过程。想象一下,如果你要手动管理所有需要的库文件(即jar包),你得一个个去下载、配置,还要确保它们之间没有版本冲突——这不仅耗时而且容易出错。而Maven就像一个智能助手,它能自动帮你:
- 下载所需的库:只要你在项目配置文件(pom.xml)中声明需要哪些库,Maven会自动从网上找到并下载这些库到你的项目中。
- 管理依赖关系:如果某个库依赖于其他库,Maven会自动处理这些“依赖的依赖”,确保一切都井然有序。
- 编译、测试和打包:Maven有一套标准的生命周期,可以自动执行编译代码、运行测试以及打包成可部署格式(如JAR或WAR文件)等任务。
- 保持项目结构一致:Maven鼓励遵循一种标准化的目录结构,这样无论谁接手项目,都能快速理解其布局和工作方式。
- 团队协作更顺畅:由于所有开发者都使用相同的工具和约定,团队成员之间的合作变得更加简单高效,减少了因为环境差异带来的问题。
- 易于集成持续集成/持续部署(CI/CD)流程:Maven与许多CI/CD工具无缝集成,使得自动化构建和发布变得轻而易举。
总的来说,Maven让开发者可以把更多时间和精力集中在编写业务逻辑上,而不是被繁琐的项目管理和构建细节所困扰。这就是为什么现代Java项目普遍采用Maven作为项目管理工具的原因。
一、环境变量设置
- Windows下打开系统环境变量,在其中新建
MAVEN_HOME
变量,值为maven安装目录\bin
,如(D:\apache-maven-3.9.9\bin
) - 在环境变量PATH中添加
%MAVEN_HOME%
- 在命令行下执行
mvn -n
,查看是否安装成功。
二、设置Maven的本地jar仓库位置
说明:需要指定一个目录为Maven Jar仓库的本地存储位置。
新建:D:\jarstore\repository
目录。
三、设置maven配置文件settings.xml
maven安装目录\conf`下的settings.xml文件中包含很多maven设置。主要配置:
- 本地Jar仓库地址:前面创建的
D:\jarstore\repository
目录; - 镜像仓库URL:Maven官方主仓库速度较慢,所以建议配置国内的Maven镜像仓库URL。
- 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文件中大约在159行
<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
。主要设置如下三个配置:
- Maven home path:设置为Maven的安装目录,如
D:\apache-maven-3.9.9
- User settings file:选择
Override
,然后选择按目录下的setting.xml,如D:\apache-maven-3.9.9\conf\settings.xml
。 - Local respository:保证里面的值为你刚才创建的本地Jar仓库的目录路径,如
D:\jarstore\repository
.
注意:设置完后一定要保存、应用,然后重启IDEA。
4.2 在IDEA中创建maven项目
如果只是创建一个普通的Java项目,可以在New Project
中选择Java,然后点选maven
,选择正确的JDK版本,与刚才设置的要一致如JDK 17。
然后在Advanced Settings
进行如下设置:
- GroupID: 为组织名称,如jmu.net
- ArtifactId:为项目名称,如mvnprj01
注意:第一次创建maven项目需要下载相关插件、jar包,所以速度比较慢,请耐心等候。
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设置错误,要不然就是提示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>
参考代码:
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让其生成相关
参考链接:
标签:xml,maven,创建,Excel,IDEA,Maven,apache From: https://www.cnblogs.com/zhrb/p/18612024