MavenError: не удалось выполнить цель в проекте: не удалось разрешить зависимости. В проекте Maven Multimodule
Я пытаюсь создать многомодовый проект maven. проект создается успешно, но когда я пытаюсь использовать один модуль как зависимость от другого модуля, он генерирует исключение. Когда я создаю модуль, используя eclipse, я выбирал упаковку как банку, но когда модуль создается, тег упаковки не упоминался в child pom.xml, и я вручную вставляю тег упаковки как банку.
следующий мой родитель pom.xml
:
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.netsol</groupId>
<artifactId>empirecl</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
-------------------------
<modules>
<module>empirecl-web</module>
<module>empirecl-dao</module>
<module>empirecl-service</module>
<module>empirecl-api</module>
</modules>
Детский модуль Dao:
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.netsol</groupId>
<artifactId>empirecl</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>empirecl-dao</artifactId>
<packaging>jar</packaging>
<name>empirecl-dao</name>
------------------------
Сервисный дочерний модуль:
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.netsol</groupId>
<artifactId>empirecl</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>empirecl-service</artifactId>
<packaging>jar</packaging>
<name>empirecl-service</name>
<dependencies>
<dependency>
<groupId>com.netsol</groupId>
<artifactId>empirecl-dao</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>jar</type>
</dependency>
------------------------------------------
Модуль Dao maven очистку и установку успешно, но когда я пытаюсь использовать сервисный модуль, он будет генерировать следующее исключение:
[ERROR] Failed to execute goal on project empirecl-service: Could not resolve dependencies for project com.netsol:empirecl-service:jar:0.0.1-SNAPSHOT: Failed to collect dependencies at com.netsol:empirecl-dao:jar:0.0.1-SNAPSHOT: Failed to read artifact descriptor for com.netsol:empirecl-dao:jar:0.0.1-SNAPSHOT: Could not find artifact com.netsol:empirecl:pom:0.0.1-SNAPSHOT -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal on project empirecl-service: Could not resolve dependencies for project com.netsol:empirecl-service:jar:0.0.1-SNAPSHOT: Failed to collect dependencies at com.netsol:empirecl-dao:jar:0.0.1-SNAPSHOT
Я пытаюсь найти решение из Интернета, но решение все же не найдено. В eclipse, когда я открываю Dependency Hierarchy
сервисного модуля, он показал DAO-модуль как папку, а не jar. ниже приведен снимок экрана Dependency Hierarchy
сервисного модуля.
![enter image description here]()
Ответы
Ответ 1
В случае, если кто-нибудь вернется к этому, я думаю, что проблема здесь заключалась в том, что сначала не удалось установить родительский pom, от которого зависят все эти подмодули, поэтому Maven Реактор не может собирать необходимые зависимости для построения подмодуля.
Итак, из корневого каталога (здесь D:\luna_workspace\empire_club\empirecl
), возможно, просто требуется a:
mvn clean install
(Кроме того: <relativePath>../pom.xml</relativePath>
на самом деле не требуется, поскольку это значение по умолчанию).
Ответ 2
В моем случае я забыл, что это был конфликт упаковки с банкой против пома. Я забыл написать
<packaging>pom</packaging>
В каждом дочернем файле pom.xml
Ответ 3
Мое решение было вставить его между artifaktId
и version
<groupId>com.onlinechat</groupId>
<artifactId>chat-online</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>server</module>
<module>client</module>
<module>network</module>
</modules>