项目中存在一个使用ILoggingEvent的类,该类已从logback-classic.jar导入。它也可以在项目中作为Maven依赖项使用,也可以在.m2文件夹中使用。但是当我执行mvn全新安装时,出现以下错误:
[错误] /C:/Users/xxx/project/LogMonitor.java:[6,34]包
ch.qos.logback.classic.spi不存在
找不到符号符号: ILoggingEvent类
当我从jar中提取文件时,我能够找到与那个jar相同的软件包。最重要的是,尽管它是使用ILoggingEvent的类,但我在LogMonitor类中也没有看到错误标记。 我尝试过Maven更新,项目清理。但是我仍然看到它失败了。 Maven的配置没有问题,因为成功构建了另一个存储库。请帮忙解决该问题
编辑: 存在此代码的repo的pom文件。
<parent>
<groupId>com.common</groupId>
<artifactId>common-pom</artifactId>
<version>0.25.5</version>
</parent>
<artifactId>aws</artifactId>
pom of common:
<groupId>com.common</groupId>
<artifactId>common-pom</artifactId>
<version>0.25.5</version>
<packaging>pom</packaging>
<name>Common</name>
<modules>
<module>xxx</module>
</modules>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>xxx</artifactId>
<version>${project.version}</version>
</dependency>
<dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</dependency>
</dependencies>
答案 0 :(得分:1)
首先,在父pom中具有实际依赖关系是一种不好的做法。相反,您应该仅在父pom中具有依赖项管理,以指定应使用的依赖项的版本,然后在使用子项中指定所需的依赖项。否则,您可能最终在实际上不需要罐子的项目的类路径上使用罐子。
简而言之: 父pom(通常是pom)应仅包含:
<groupId>com.common</groupId>
<artifactId>common-pom</artifactId>
<version>0.25.5</version>
<packaging>pom</packaging>
<name>Common</name>
<modules>
<module>xxx</module>
</modules>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.3</version>
</dependency>
</dependencies>
<dependencies>
<dependencyManagement>
然后父pom的使用者将包含没有版本号的依赖项:
<dependencies>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</dependency>
重要的是,您可以在某个时候指定正确的版本号和指定的范围(请参见https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope)。
答案 1 :(得分:-1)
您的依赖关系应如下所示:
<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
范围可能设置为<scope>test</scope>
。如果要在src/main/java
中使用它,则必须将范围设置为compile(未定义范围时默认)