Пакет не существует при компиляции Maven - PullRequest
0 голосов
/ 28 августа 2018

В проекте существует класс, использующий ILoggingEvent, который был найден импортированным из logback-classic.jar. Он доступен в проекте как maven зависимость, а также в папке .m2. Но когда я делаю чистую установку mvn, я получаю ошибку ниже:

[ОШИБКА] /C:/Users/xxx/project/LogMonitor.java:[6,34] package

ch.qos.logback.classic.spi не существует

не может найти символ символа: класс ILoggingEvent

Когда я извлек файлы из jar, я смог найти тот же пакет с этим jar. Кроме того, в классе LogMonitor я также не вижу отметки ошибок, хотя именно в ней используется ILoggingEvent. Я пробовал обновление maven, проект чистый. Но все же я вижу, что это терпит неудачу. Нет никаких проблем в конфигурации maven, так как другое хранилище построено успешно. Пожалуйста, укажите, как это можно решить

Edit: 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>

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Прежде всего, это плохая практика иметь реальные зависимости в родительском поме. Вместо этого у вас должно быть только управление зависимостями в родительском pom, чтобы указать версии зависимостей, которые должны использоваться, а затем у потребляющих дочерних элементов необходимые зависимости. В противном случае вы можете получить jar на пути к классам проектов, которые на самом деле не требуют их.

Короче говоря: Родительский пом (вы обычный пом) должен содержать только:

 <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).

0 голосов
/ 28 августа 2018

Ваша зависимость должна выглядеть так:

<!-- 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, вы должны установить область при компиляции (по умолчанию, когда область не определена)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...