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相关系统环境变量设置
- Windows下打开系统环境变量,在其中新建
MAVEN_HOME
变量,值为maven安装目录\bin
,如(D:\apache-maven-3.9.9\bin
); - 在环境变量PATH中添加
%MAVEN_HOME%
; - 在命令行下执行
mvn -n
,查看是否安装成功。
详见下三图:
maven的本地jar仓库位置">二、设置Maven的本地JAR仓库位置
说明:需要指定一个目录为Maven Jar仓库的本地存储位置。
新建:D:\jarstore\repository
目录。
maven配置文件settingsxml">三、设置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文件中 附近添加如下配置信息:
<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
。主要设置如下三个配置:
- 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。
idea中创建maven项目">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
文件。详见下图:
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主页