У меня есть customModule, который зависит от приложения user-portal. user-portal зависит от модуля util
Вот соответствующие POM
customModule ПОМ
<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">
<parent>
<artifactId>parent-build</artifactId>
<groupId>com.myComp.user</groupId>
<version>1</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>customModule</groupId>
<artifactId>dbunit</artifactId>
<dependencies>
<dependency>
<groupId>com.myComp.user</groupId>
<artifactId>user-portal</artifactId>
<version>1.15</version>
<scope>compile</scope>
<type>war</type>
</dependency>
</dependencies>
</project>
user-portal POM, имеющий utils в качестве зависимости
<dependencies>
<dependency>
<groupId>com.myComp.user.utils</groupId>
<artifactId>utils</artifactId>
<version>1</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
</dependencies>
Но классы utils не видны в customModule. Я не уверен, почему здесь не видны транзитивные зависимости / классы?
@khmarbaise См. мой комментарий под ответом


Когда зависит от упаковки войны, классы внутри войны не видны. Вы должны добавить <attachClasses>true</attachClasses> в свой плагин war в проекте user-portal. Это даст и war, и jar с классами.
В зависимом проекте вы должны полагаться на <classifier>classes</classifier>, а не на войну.
внутри пользовательского портала pom.xml
<build>
...
<plugins>
...
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<attachClasses>true</attachClasses>
</configuration>
</plugin>
...
</plugins>
...
</build>
customModule pom.xml
<dependency>
<groupId>com.myComp.user</groupId>
<artifactId>user-portal</artifactId>
<version>1.15</version>
<classifier>classes</classifier>
</dependency>
В качестве примечания, область действия по умолчанию - это компиляция, вам не нужно ее указывать.
Источник = https://pragmaticintegrator.wordpress.com/2010/10/22/using-a-war-module-as-dependency-in-maven/
С предложенными вами изменениями я вижу, что user-portal-1-classes сгенерирован, но этот jar не содержит дополнительных зависимостей (прямых и транзитивных), от которых зависит мой customModule?
@scottmiles Да. Он не будет содержать классов зависимостей, если вам нужны зависимости, вы также должны добавить maven-assembly-plugin в. плагин war создаст вашу войну, сборка создаст банку с зависимостями. (плагин сборки также может создавать войны, но не рекомендуется для этого использования.) maven.apache.org/plugins/maven-assembly-plugin/usage.ht мл
Да, ты прав. Но каким-то образом мое затмение может разрешать переходные зависимости даже без создания исполняемой / толстой банки. Я считаю, что eclipse может разрешить все зависимые проекты через атрибут classifier в pom
Проблема просто в том, что вы используете войну как зависимость, которая по умолчанию не является транзитивной. Вы должны соответствующим образом изменить этот модуль
war, чтобы создать отдельный файл jar, который описан в ответе.