使用maven引用库时出现编译错误

spe*_*0ne 5 java compiler-errors build pom.xml maven

我是maven的新手,我在构建项目时遇到了一些麻烦.我已将log4j依赖项添加到pom文件中

    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.16</version>
        <scope>runtime</scope>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

我正在我的一个班级正常使用它

import org.apache.log4j.Logger;

public class ConnectionPoolImpl implements Runnable, ConnectionPool {
  static Logger logger = Logger.getLogger(ConnectionPoolImpl.class);
Run Code Online (Sandbox Code Playgroud)

编译进行得很顺利,直到我使用了mvn clean命令.现在,当我尝试使用mvn编译构建我的项目时,我得到:

[INFO] Compiling 2 source files to C:\Temp\cp\target\classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] \Temp\cp\src\main\java\com\opower\connectionpool\ConnectionPoolImpl.java
:[9,23] package org.apache.log4j does not exist
[ERROR] \Temp\cp\src\main\java\com\opower\connectionpool\ConnectionPoolImpl.java
:[19,9] cannot find symbol
symbol  : class Logger
location: class com.opower.connectionpool.ConnectionPoolImpl
[ERROR] \Temp\cp\src\main\java\com\opower\connectionpool\ConnectionPoolImpl.java
:[19,25] cannot find symbol
symbol  : variable Logger
location: class com.opower.connectionpool.ConnectionPoolImpl
[INFO] 3 errors
Run Code Online (Sandbox Code Playgroud)

我的错误是什么?

Pet*_*hev 16

我不是Maven专家,但log4j范围应该是compile代替runtime.如果我错了,请纠正我.

来自maven doc,

runtime - 此范围指示编译不需要依赖项,但是用于执行.它位于运行时和测试类路径中,但不是编译类路径.