Maven не может разрешить зависимость для модуля в том же мультимодульном проекте

При выполнении таких команд, как

mvn dependency:build-classpath

или

mvn exec:java

Maven не может разрешить зависимость одного из моих модулей с другим.

[ERROR] Не удалось выполнить цель в проекте parser-app проекта: не удалось разрешить зависимости для проекта project_group: A: jar: 0.1-SNAPSHOT: не удалось найти артефакт project_group: B: jar: 0.1-SNAPSHOT

Структура проекта выглядит следующим образом:

/pom.xml
/A/pom.xml
/B/pom.xml

Родительский pom выглядит следующим образом:

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>project_group</groupId>
  <artifactId>parent</artifactId>
  <packaging>pom</packaging>
  <version>0.1-SNAPSHOT</version>
  <name>parent</name>

  <modules>
    <module>A</module>
    <module>B</module>
  </modules>

Первый дочерний модуль (тот, который не разрешает зависимость):

    <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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>parent_group</groupId>
    <artifactId>parent</artifactId>
    <version>0.1-SNAPSHOT</version>
  </parent>
  <artifactId>A</artifactId>
  <packaging>jar</packaging>
  <name>A</name>

  <dependencies>
    <dependency>
      <groupId>parent_group</groupId>
      <artifactId>B</artifactId>
      <version>0.1-SNAPSHOT</version>
    </dependency>

Второй дочерний модуль (зависимость):

  <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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>parent_group</groupId>
    <artifactId>parent</artifactId>
    <version>0.1-SNAPSHOT</version>
  </parent>
  <artifactId>B</artifactId>
  <packaging>jar</packaging>
  <name>B</name>

Ответы

Ответ 1

Запустили ли вы mvn clean install хотя бы один раз в проекте для установки зависимостей в вашем локальном репозитории?

Ответ 2

Реактор Maven так странен, он хранит модули только для определенных задач. При запуске цели сборки, которая делает что-то только для одного подпроекта, даже если Maven сначала строит зависимости, он не удерживает их в реакторе (иногда).

Установка в локальный репозиторий - это обходной путь, но он ужасен, и его следует избегать, когда это возможно, потому что вы можете легко получить устаревшие результаты сборки.

Немного менее уродливый обходной путь - объединить две цели сборки, где вторая цель сборки делает что-то безобидное, но вызывает добавление к реактору во всех подпроектах.

В качестве примера вы можете объединить нужную задачу с задачами "компиляция" или "пакет".

Также смотрите ответ с наибольшим количеством голосов на Maven не распознает одноуровневые модули при запуске зависимости mvn: tree

Ответ 3

Эта ошибка также может быть вызвана тем, что Maven находится в автономном режиме.

Иногда кажется, что я случайно включил автономный режим в IntelliJ IDEA. Чтобы отключить его, переключите переключатель Toggle Offline Mode на панели инструментов Maven

enter image description here

или снимите флажок "Работа в автономном режиме" в настройках в разделе Build, Execution, Deployment > Build Tools > Maven.

enter image description here