Использование maven-dependency-plugin внутри профиля maven - PullRequest
0 голосов
/ 17 июня 2020

Я создал профиль maven с подключаемым модулем maven-dependency-plugin внутри.

Ниже мой плагин

         <profile>
            <id>copy-dep</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-dependency-plugin</artifactId>
                        <executions>
                        <execution>
                            <id>copy-external</id>
                            <phase>none</phase>
                            <goals>
                                <goal>copy</goal>
                            </goals>
                        </execution>
                        </executions>
                        <configuration>
                            <excludeGroupIds>group ids that I need to exclude</excludeGroupIds>
                            <excludeArtifactIds>artifact ids that I need to exclude</excludeArtifactIds>
                            <includeArtifactIds>artifact ids that I need to include</includeArtifactIds>
                            <includeGroupIds>group id that I need to include</includeGroupIds>
                            <outputDirectory>${project.build.directory}/libs</outputDirectory>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

Я использую команду ниже для выполнения

mvn dependency:copy-dependencies -DoutputDirectory=libs -Pcopy-dep

Но когда я выполняю команду, он ищет все зависимости, определенные в pom и также копирует их.

Я попытался поместить нежелательные зависимости внутри тега exclude, но это не сработало, я также попытался удалить тег exclude и сохранить требуемые зависимости, но также не сработал.

В моем pom я использую плагин сборки maven, чтобы отделить необходимые зависимости, которые я не хочу копировать с созданным профилем.

Любая идея, где я ошибаюсь Вот? есть ли лучший способ добиться того же.

Ответы [ 2 ]

1 голос
/ 17 июня 2020

Чтобы скопировать только "перечисленные" артефакты (в этом примере будут копироваться только junit и mockito):

<profile>
  <id>copy-dep</id>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>2.8</version>
        <configuration>
          <artifactItems>
            <artifactItem>
              <groupId>junit</groupId>
              <artifactId>junit</artifactId>
              <version>4.12</version>
            </artifactItem>
            <artifactItem>
              <groupId>org.mockito</groupId>
              <artifactId>mockito-core</artifactId>
              <version>2.28.2</version>
            </artifactItem>
          </artifactItems>
          <outputDirectory>${project.build.directory}/libs</outputDirectory>
        </configuration>
      </plugin>
    </plugins>
  </build>
</profile>

и выполнить его:

mvn dependency:copy -Pcopy-dep
0 голосов
/ 17 июня 2020

Вам нужно указать Maven, какое выполнение нужно запустить. Так что напишите:

mvn dependency:copy-dependencies@copy-external -DoutputDirectory=libs -Pcopy-dep

Кстати: помещать это в профиль, вероятно, не обязательно.

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