【工具】在IntelliJ IDEA中使用Maven进行依赖管理

以下使用pom.xml管理Java项目结构。
省流:
如果“源代码所在目录”未指定正确,则会出现明明目录里有各种源文件、却显示无法找到Class、无法正常进行import、无法正常运行等问题。
edit time: 2025-12-10 17:53:36

全网最强Maven介绍

我也开始当标题党了嘿嘿

首先介绍一个典型的 pom.xml ,它是maven用于定义项目结构的文件。

我们可能需要自行修改的内容介绍:

  • <groupId, artifactId, version> 自行指定,表示本项目的库名、版本等等,用于各个项目之间的依赖确定。例如其他项目希望导入1.0-SNAPSHOT版本的这个项目,则你就需要写对项目名称和版本号。
  • maven.compiler.sourcemaven.compiler.target 用于指定JDK版本,例如 17
  • dependencies 是maven管理依赖的核心。如果我们需要从网络中下载依赖、或者需要管理自己的多个项目之间的依赖,则需要在此处指定相应的 <groupId, artifactId, version>
  • build 下的 sourceDirectorytestSourceDirectory 常常是我们识别不到 Main.java 等文件的原因。因为如果未指定,则maven默认从 src/main/javasrc/test/java 这两个目录下寻找 Main.java 等源文件,而不会把我们其他位置的 java 文件理解为源文件。我下述的 Main.java 直接位于 src 目录下,而不是默认的 src/main/java 目录下,所以要指定 sourceDirectorysrc
<?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.yourcompany</groupId>  
    <artifactId>TextEditorSD</artifactId>  
    <version>1.0-SNAPSHOT</version>  
    <packaging>jar</packaging>  
  
    <properties>        <maven.compiler.source>17</maven.compiler.source>  
        <maven.compiler.target>17</maven.compiler.target>  
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
        <languagetool.version>6.3</languagetool.version>  
    </properties>  
    <dependencies>        <!-- LanguageTool 核心依赖 -->  
        <dependency>  
            <groupId>org.languagetool</groupId>  
            <artifactId>languagetool-core</artifactId>  
            <version>${languagetool.version}</version>  
        </dependency>  
        <!-- 英文语言包 -->  
        <dependency>  
            <groupId>org.languagetool</groupId>  
            <artifactId>language-en</artifactId>  
            <version>${languagetool.version}</version>  
        </dependency>  
        <dependency>            <groupId>org.slf4j</groupId>  
            <artifactId>slf4j-simple</artifactId>  
            <version>2.0.9</version>  
        </dependency>  
        <!-- JUnit 5 依赖 -->  
        <dependency>  
            <groupId>org.junit.jupiter</groupId>  
            <artifactId>junit-jupiter-api</artifactId>  
            <version>5.8.1</version>  
            <scope>test</scope>  
        </dependency>        <dependency>            <groupId>org.junit.jupiter</groupId>  
            <artifactId>junit-jupiter-engine</artifactId>  
            <version>5.8.1</version>  
            <scope>test</scope>  
        </dependency>  
        <!-- 可选:如果你用了@ParameterizedTest -->  
        <dependency>  
            <groupId>org.junit.jupiter</groupId>  
            <artifactId>junit-jupiter-params</artifactId>  
            <version>5.8.1</version>  
            <scope>test</scope>  
        </dependency>        <dependency>            <groupId>org.junit.jupiter</groupId>  
            <artifactId>junit-jupiter-api</artifactId>  
            <version>5.9.3</version>  
            <scope>compile</scope>  
        </dependency>    </dependencies>  
    <build>        <testSourceDirectory>src/test</testSourceDirectory>  
        <sourceDirectory>src</sourceDirectory>  
        <plugins>            <plugin>                <groupId>org.apache.maven.plugins</groupId>  
                <artifactId>maven-compiler-plugin</artifactId>  
                <version>3.8.1</version>  
                <configuration>                    <source>${maven.compiler.source}</source>  
                    <target>${maven.compiler.target}</target>  
                </configuration>            </plugin>        </plugins>    </build></project>

为了避免混淆,在下面介绍另一种管理依赖的方式:IDEA的Project Structure。
如果在新建IDEA项目时的Build system选择了 IntelliJ ,则会在项目根目录下生成 iml 文件(如 TextEditorSD.iml ),
这个文件的作用类似于上述 pom.xml ,用于指定项目源文件目录、包依赖等等。

而我们要修改这个 iml 文件的方法是在左上角 File - Project Structure - Modules等选项卡下选择。
例如上图可以点击 src 目录,然后选择 Mark as: Sources,从而得到与上述 pom.xml 类似的效果:把 src 目录指定为项目源文件夹。
如果源文件夹未指定正确,则会出现明明目录里有各种源文件、却显示无法找到Class、无法正常进行import、无法正常运行等问题。

如何添加依赖

在Maven中添加依赖是简单而直接的:

如果已经下载了相应的class,则可以把指针悬浮在上面,选择 ...
进行import,或者Find JAR on web,或者添加ClassPath等方式。

如果同时有Maven和IntelliJ两种构建方式

参考: Maven 依赖项 | IntelliJ IDEA 文档

根据IDEA官方文档介绍,Maven的 pom.xml 中的设置实际上是优先级更高的。
在我们选择创建一个 pom.xml 后,请不再使用 Project Structure 手动设置依赖关系,而是对项目的配置全部集中到 pom.xml 中。

开心!
明白了maven和原来的project structure标文件夹颜色是等价的;
解决办法是把原来的import删掉然后在用到的地方选择添加ClassPath。

以前写的零零散散的Project Structure方法

以下使用IDEA的Project Structure管理Java项目结构。

没有运行按钮

很可能是项目源码没有mark成source。

  1. 右键项目文件夹→
  2. Open Module Settings→
  3. 从左到右,Project Settings:
    Modules→选中项目文件夹→Mark as下面也选中项目文件夹→Mark as选Sources→Apply, OK

关于没有找到主类:关闭项目,重新打开即可。

全局更改运行库设置

首先File - Close Project,在主界面里:
Customize - All Settings...
之后找到Build, Execution, Deployment - Build Tools - Maven
单击之后把Local repository 勾选[ ] Override,改成你需要的运行库即可。

ps. 如果对于某特定项目已经存储了特殊的配置,可以在不Close Project的情况下手动改该项目对应的Settings... 。我猜也可以把这个项目的配置文件删掉让它重新生成一个,但我没试过。

读到的import库是奇怪的org而不是自己实现的包

大概率是source之类的没有mark对,跟本目录下的“IntelliJ没有Run”很可能有相似的解决办法。

  1. 右键项目文件夹→
  2. Open Module Settings→
  3. 从左到右,Project Settings:
    Modules→选中项目文件夹→Mark as下面也选中项目文件夹→Mark as选Sources→Apply, OK