У меня довольно простая структура проекта в Maven с подмодулями:
/
-pom.xml
-Utils/
-pom.xml
В /pom.xml
Я определяю свойства для всех подмодулей, таких как версии библиотеки или конфигурации плагинов:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>project</groupId>
<artifactId>main</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>Utils</module>
</modules>
<properties>
<java.version>10</java.version>
<vertx.version>3.5.0</vertx.version>
</properties>
</project>
В /Utils/pom.xml
я объявляю подмодуль и его зависимости:
<project>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>project</groupId>
<artifactId>main</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>Utils</artifactId>
<version>1.0.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-core</artifactId>
<version>${vertx.version}</version>
</dependency>
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-unit</artifactId>
<version>${vertx.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
И я объявляю module-info.java
файл:
module util {
requires vertx.core;
}
Когда я открываюПроект в моей IDE работает как положено, я могу получить доступ к классам из пакета vertx.core
в модуле Utils
, и все зависимости перечислены там.Однако, когда я пытаюсь скомпилировать с maven, вызывая mvn clean compile
, кажется, что зависимости не находятся в пути к классам:
[INFO] Compiling 11 source files to /home/manulaiko/Programming/Java/Kalaazu/Utils/target/classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /home/manulaiko/Programming/Java/Kalaazu/Utils/src/main/java/module-info.java:[5,19] module not found: vertx.core
Я пытался (без успеха):
- Установите версии библиотеки непосредственно в узле
dependency
. - Установите узел
properties
в /Utils/pom.xml
. - Попробуйте другую версию библиотеки.
- Проверьте правильность пути к классам с помощью
mvn dependency:build-classpath -Dmdep.outputFile=cp.txt
и наличие библиотек. - Выполните
mvn clean compile
в /
. - Выполните
mvn clean compile
в /Utils
. - Выполнить
mvn -pl Utils clean compile
в /
- Выполнить
mvn clean install -U
в /
. - Выполнить
mvn clean install -U
в /Utils
.