Есть ли способ получить зависимости времени выполнения только одной конкретной зависимости? - PullRequest
0 голосов
/ 02 февраля 2019

У меня есть мультимодульный проект Maven.Некоторые модули являются зависимостями других, в то время как отдельный проект [хранилище общих ресурсов] содержит модули, которые являются зависимостями в моем основном проекте.

Мне удалось создать промежуточный модуль, который собирал бы файлы времени выполнения, которые я смогчтобы передать, но когда я пытаюсь включить один и тот же код в другой модуль, он извлекает ВСЕ исполняемые файлы jar, а не только конкретные зависимости.Код ниже.

GroupID B - это внешний проект 'commons', который мы используем в нескольких проектах.

<dependency>
     <groupId>B</groupId>
     <artifactId>B.artifact2</artifactId>
     <version>${B.version}</version>
</dependency>   

Мне удалось создать отдельный [промежуточный] модуль, используя только B.artifact2 в качествеединственная зависимость, и использовал следующий код, чтобы перетащить файлы времени выполнения в их собственную папку $ {project.build.directory} / target

<artifactId>maven-dependency-plugin</artifactId>
<version>${maven-dependency-plugin.version}</version>
<executions>
  <execution>
    <id>1</id>
    <phase>prepare-package</phase>
    <goals>
      <goal>copy-dependencies</goal>
    </goals>
    <configuration>
      <includeScope>runtime</includeScope>
      <excludeGroupIds>com.google.code.findbugs,net.jcip</excludeGroupIds>
      <outputDirectory>${project.build.directory}/dependency-jars</outputDirectory>
    </configuration>
  </execution>

, которая отлично работает [дает мне ~ 15 банок, которые мне нужны], но мы не хотим использовать промежуточный модуль.Я пытаюсь включить это в основной модуль [который является зависимостью от посредника], но у меня нет возможности выбрать только эту ОСОБЕННУЮ зависимость для получения jar-файлов времени выполнения, вместо этого она вытягивает практически все зависимости времени выполнения в папку.Этот проект выглядит следующим образом:

    <dependency>
        <groupId>A</groupId>
        <artifactId>A.artifact</artifactId>
        <version>${A.version}</version>
        <classifier>dist</classifier>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>B</groupId>
        <artifactId>B.artifact1</artifactId>
        <version>${B.version}</version>
    </dependency>
    <dependency>
        <groupId>B</groupId>
        <artifactId>B.artifact2</artifactId>
        <version>${B.version}</version>
    </dependency>

У меня есть несколько зависимостей в этом модуле, и при использовании чего-либо, как показано ниже, все равно будут извлечены ВСЕ зависимости времени выполнения [~ 40 jars]

      <execution>
          <id>test</id>
          <phase>package</phase>
          <goals>
              <goal>copy-dependencies</goal>
          </goals>
          <configuration>
              <includeScope>runtime</includeScope>
              <excludeGroupIds>A,C,D,com.google.code.findbugs,net.jcip</excludeGroupIds>
              <outputDirectory>${project.build.directory}/dependency-jars</outputDirectory>
          </configuration>
      </execution>

Если япопробуйте ограничить его B.artifact2, я получаю только артефакт от B.artifact2, а не jar / зависимости времени выполнения для него ...

Я вынужден использовать промежуточный модуль, а затем использовать его какзависимость для основного модуля?

1 Ответ

0 голосов
/ 04 февраля 2019

Мне кажется, что вы начали в неправильном направлении, используя copy-dependencies.

В Maven вы не обрабатываете зависимости, копируя их, а вместо этого определяете их враздел зависимостей POM и извлеките их из репозитория Maven.

В компаниях вы обычно запускаете Nexus / Artifactory на сервере и используете его.

Вы также можете использовать локальный репозиторий Maven, если ваши проекты небольшие и вы всего лишь один разработчик.В любом случае, не пытайтесь копировать зависимости из одного проекта в другой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...