Ответ 1
Запустили ли вы mvn clean install
хотя бы один раз в проекте для установки зависимостей в вашем локальном репозитории?
При выполнении таких команд, как
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>
Запустили ли вы mvn clean install
хотя бы один раз в проекте для установки зависимостей в вашем локальном репозитории?
Реактор Maven так странен, он хранит модули только для определенных задач. При запуске цели сборки, которая делает что-то только для одного подпроекта, даже если Maven сначала строит зависимости, он не удерживает их в реакторе (иногда).
Установка в локальный репозиторий - это обходной путь, но он ужасен, и его следует избегать, когда это возможно, потому что вы можете легко получить устаревшие результаты сборки.
Немного менее уродливый обходной путь - объединить две цели сборки, где вторая цель сборки делает что-то безобидное, но вызывает добавление к реактору во всех подпроектах.
В качестве примера вы можете объединить нужную задачу с задачами "компиляция" или "пакет".
Также смотрите ответ с наибольшим количеством голосов на Maven не распознает одноуровневые модули при запуске зависимости mvn: tree
Эта ошибка также может быть вызвана тем, что Maven находится в автономном режиме.
Иногда кажется, что я случайно включил автономный режим в IntelliJ IDEA. Чтобы отключить его, переключите переключатель Toggle Offline Mode
на панели инструментов Maven
или снимите флажок "Работа в автономном режиме" в настройках в разделе Build, Execution, Deployment > Build Tools > Maven
.