Переходных зависимостей не видно?

У меня есть 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. Я не уверен, почему здесь не видны транзитивные зависимости / классы?

Проблема просто в том, что вы используете войну как зависимость, которая по умолчанию не является транзитивной. Вы должны соответствующим образом изменить этот модуль war, чтобы создать отдельный файл jar, который описан в ответе.

khmarbaise 18.03.2018 10:38

@khmarbaise См. мой комментарий под ответом

scott miles 18.03.2018 11:11
Не удалось выполнить цель org.apache.maven.plugins
Не удалось выполнить цель org.apache.maven.plugins
Опишу, что когда я только начинал изучать Maven, у меня не получалось компилировать и упаковывать.
Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Если вы являетесь веб-разработчиком или тестировщиком, вы можете быть знакомы с Selenium, популярным инструментом для автоматизации работы...
3
2
267
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Когда зависит от упаковки войны, классы внутри войны не видны. Вы должны добавить <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?

scott miles 18.03.2018 11:09

@scottmiles Да. Он не будет содержать классов зависимостей, если вам нужны зависимости, вы также должны добавить maven-assembly-plugin в. плагин war создаст вашу войну, сборка создаст банку с зависимостями. (плагин сборки также может создавать войны, но не рекомендуется для этого использования.) maven.apache.org/plugins/maven-assembly-plugin/usage.ht‌ мл

miskender 18.03.2018 12:04

Да, ты прав. Но каким-то образом мое затмение может разрешать переходные зависимости даже без создания исполняемой / толстой банки. Я считаю, что eclipse может разрешить все зависимые проекты через атрибут classifier в pom

scott miles 18.03.2018 12:45

Другие вопросы по теме