[英]Package doesnot exist on maven compilation
項目中存在一個使用ILoggingEvent的類,該類從logback-classic.jar中導入。 它也可以在項目中作為Maven依賴項使用,也可以在.m2文件夾中使用。 但是當我執行mvn clean install時,出現以下錯誤:
[錯誤] /C:/Users/xxx/project/LogMonitor.java:[6,34]程序包
ch.qos.logback.classic.spi不存在
找不到符號符號:類ILoggingEvent
當我從jar中提取文件時,我能夠找到與那個jar相同的軟件包。 最重要的是,我也沒有在LogMonitor類中看到任何錯誤標記,盡管它是使用ILoggingEvent的錯誤標記,我嘗試過maven update,project clean。 但是我仍然看到它失敗了。 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>
首先,在父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 )。
您的依賴關系應如下所示:
<!-- 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(未定義范圍時為默認值)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.