聚合国内IT技术精华文章,分享IT技术精华,帮助IT从业人士成长

Windows+IntelliJ IDEA+Maven环境配置

2021-11-03 14:31 浏览: 3360907 次 我要评论(0 条) 字号:

Maven简介

在了解Maven之前,我们先来看看一个Java项目需要的东西。首先,我们需要确定引入哪些依赖包。例如,如果我们需要用到commons logging,我们就必须把commons logging的jar包放入classpath。如果我们还需要log4j,就需要把log4j相关的jar包都放到classpath中。这些就是依赖包的管理。其次,我们要确定项目的目录结构。例如,src目录存放Java源码,resources目录存放配置文件,bin目录存放编译生成的.class文件。此外,我们还需要配置环境,例如JDK的版本,编译打包的流程,当前代码的版本号。最后,除了使用Eclipse这样的IDE进行编译外,我们还必须能通过命令行工具进行编译,才能够让项目在一个独立的服务器上编译、测试、部署。这些工作难度不大,但是非常琐碎且耗时。如果每一个项目都自己搞一套配置,肯定会一团糟。我们需要的是一个标准化的Java项目管理和构建工具。

Maven就是是专门为Java项目打造的管理和构建工具,它的主要功能有:

  • 提供了一套标准化的项目结构;
  • 提供了一套标准化的构建流程(编译,测试,打包,发布……);
  • 提供了一套依赖管理机制。

一个使用Maven管理的普通的Java项目,它的目录结构默认如下:

a-maven-project
├── pom.xml
├── src
│   ├── main
│   │   ├── java
│   │   └── resources
│   └── test
│       ├── java
│       └── resources
└── target

项目的根目录a-maven-project是项目名,它有一个项目描述文件pom.xml,存放Java源码的目录是src/main/java,存放资源文件的目录是src/main/resources,存放测试源码的目录是src/test/java,存放测试资源的目录是src/test/resources,最后,所有编译、打包生成的文件都放在target目录里。这些就是一个Maven项目的标准目录结构。

所有的目录结构都是约定好的标准结构,我们千万不要随意修改目录结构。使用标准结构不需要做任何配置,Maven就可以正常使用。

我们再来看最关键的一个项目描述文件pom.xml,它的内容长得像下面:

<project ...>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.itranswarp.learnjava</groupId>
    <artifactId>hello</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>
    <properties>
        ...
    </properties>
    <dependencies>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>
    </dependencies>
</project>

其中,groupId类似于Java的包名,通常是公司或组织名称,artifactId类似于Java的类名,通常是项目名称,再加上version,一个Maven工程就是由groupId,artifactId和version作为唯一标识。我们在引用其他第三方库的时候,也是通过这3个变量确定。例如,依赖commons-logging:

<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.2</version>
</dependency>

使用<dependency>声明一个依赖后,Maven就会自动下载这个依赖包并把它放到classpath中。

Maven安装与配置

首先是先到官网下载Meven文件。

下载完成后,将安装文件解压到指定的目录中。

设置环境变量

将Maven安装配置到操作系统环境中。打开系统属性面板(在桌面上右键“我的电脑” → “属性”),单击高级系统设置。设置Maven_Home环境变量。新建系统变量:

变量名:Maven_Home
变量值:D:ProgramDataapache-maven-3.8.3

修改Path变量值,在Path变量值后面加上:

%Maven_Home%bin

设置MAVEN_OPTS环境变量:

变量名:MAVEN_OPTS
变量值:-Xms128m -Xmx512m

设置MAVEN_OPTS环境变量不是必须的,但建议设置。因为Java默认的最大可用内存往往不能够满足Maven运行的需要,比如在项目较大时,使用Maven生成项目站点需要占用大量的内存,如果没有该配置,则很容易得到java.lang.OutOfMemeoryError。因此,一开始就配置该变量是推荐的做法。

检查Maven安装

配置完成环境变量后,新增打开一个新的cmd窗口,运行如下命令检查Maven的安装情况:

PS C:Usersqw.TCENT> mvn -v
Apache Maven 3.8.3 (ff8e977a158738155dc465c6a97ffaf31982d739)
Maven home: D:ProgramDataapache-maven-3.8.3
Java version: 1.8.0_231, vendor: Oracle Corporation, runtime: D:Program FilesJavajdk1.8.0_231jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
PS C:Usersqw.TCENT>

Maven的配置

生成.m2文件夹,在cmd窗口中执行如下命令:mvn help:system。该命令会打印出所有的Java系统属性和环境变量,这些信息对我们日常的变成工作很有帮助。该命令的目的是让Maven执行一个正在的任务。我们可以从命令行输出看到Maven会下载maven-help-plugin,包括pom文件和jar文件。这些文件都被下载到了Maven本地仓库中。

现在.m2文件夹就生成了,在用户目录下可以找到.m2文件夹,如: C:Usersqw.TCENT.m2repository。默认情况下,该文件夹下放置了Maven本地仓库,所有的Maven构件都被存储到该仓库中,可以方便重用。可以到C:Usersqw.TCENT.m2repositoryorgapachemavenpluginsmaven-help-plugin目录下找到刚刚下载的maven-help-plugin的pom文件和jar文件。

配置用户范围的settings.xml文件。默认情况下,.m2文件夹下除了repository仓库之外就没有其他目录和文件了,不过大多数Maven用户需要复制安装目录下的D:ProgramDataapache-maven-3.8.3confsettings.xml文件到.m2文件夹下C:Usersqw.TCENT.m2settings.xml。这是一条最佳实践。Maven用户可以选择配置安装目录下的confsettings.xml文件或者.m2文件夹下的settings.xml文件。前者是全局范围的,整台机器上的所有用户都会直接受到该配置的影响,而后者是用户范围的,只有当前用户才会受到该配置的影响(推荐)。

配置Maven本地仓库

打开.m2文件夹下的settings.xml文件,添加如下配置:

<!-- 设置本地仓库位置 -->
<localRepository>D:maven-local-repository</localRepository>

这样Maven本地仓库就不用在C盘下了。

配置中央仓库的镜像(改用:阿里云中央仓库镜像)

有时我们通过Maven去下载相关的依赖包时,会发现下载的速度非常慢,而有时又下载不了,没有响应。为什么会这么慢呢,原因是Maven默认连接的远程仓库是国外的(http://repo1.maven.org/maven2/)。为了提升下载速度,只要把Maven默认的镜像改换成国内的就行了,如阿里云的中央仓库镜像。在settings.xml文件下的<mirrors>节点中,添加如下配置:

<!-- 配置中央仓库的镜像(改用:阿里云中央仓库镜像)-->
<mirror>        
  <id>alimaven</id>
  <name>aliyun-maven</name>
  <mirrorOf>central</mirrorOf>
  <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

IntelliJ IDEA中使用Maven

设置IDEA属性,在【File】—> 【Setting】—> 【Build,Execution,Deployment】 —> 【Build Tools】 —> 【Maven】,如下图:

使用Maven创建项目

创建项目

选择项目类型:

设置项目信息:

最终的项目结构如下:

编写POM.xml配置文件,引入JUnit5的jar包为例,配置信息如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
 
    <groupId>com.pjb.mvnbook</groupId>
    <artifactId>hello-maven</artifactId>
    <version>1.0-SNAPSHOT</version>
 
    <dependencies>
        <!-- JUnit5 -->
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-launcher</artifactId>
            <version>1.6.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.6.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.vintage</groupId>
            <artifactId>junit-vintage-engine</artifactId>
            <version>5.6.0</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

pom.xml修改后默认不会自动更新。需要点击右侧的图标后才能生效。

修改成自动刷新的方法,点击侧栏:Maven

点击Auto-Reload Settings…

选中Any changes,然后apply,再点击ok即可

编写代码

创建HelloMaven.java类:

public class HelloMaven
{
    public String sayHello()
    {
        return "Hello Maven";
    }
 
    public static void main(String[] args)
    {
        System.out.println(new HelloMaven().sayHello());
    }
}

创建HelloMavenTest.java测试类:

import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
 
import static org.junit.jupiter.api.Assertions.*;
 
/**
 * 使用JUnit5进行测试类
 * @author pan_junbiao
 **/
class HelloMavenTest
{
 
    @BeforeEach
    void setUp()
    {
    }
 
    @AfterEach
    void tearDown()
    {
    }
 
    @Test
    void sayHello()
    {
        HelloMaven helloMaven = new HelloMaven();
        String result = helloMaven.sayHello();
        System.out.println(result);
        assertEquals("Hello Maven",result);
    }
}

完成后如果你运行任务,则可能报如下错误:java:错误:不支持发行版本 5

原因是新建项目Java编译器的Target bytecode version,默认设置了1.5,如果和我一样使用的是jdk1.8,则将1.5改成1.8即可。

此方案还存在一个问题:每次新加一个module,所有的设置都变成默认的1.5。解决方法:在工程的pom.xml中添加:

<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

完成后运行程序即可获得预期结果。



网友评论已有0条评论, 我也要评论

发表评论

*

* (保密)

Ctrl+Enter 快捷回复