3

ディストリビューションを作成するときに収集して解凍したい依存関係の一部に二次的なアーティファクトがあるプロジェクトがあります。typeclassifierパラメーターを使用することで、これらの二次成果物を見つけることができました。これは素晴らしいことです。

唯一の問題は、推移的な依存関係ツリーが非常に大きく、ほとんどの推移的な依存関係にこの二次的な成果物がないことです。そのため、ビルドは決して見つからないものを永遠に探します。

これらの二次成果物を持つ可能性のある特定のグループ ID のみに検索を制限したいと思います。includeGroupIdsパラメータはワイルドカードを受け付けないようです

ここでワイルドカード フィルタリングを使用する方法はありますか?それとも、すべてのグループを明示的に一覧表示するというメンテナンス作業を行う必要がありますか?

これが私が今持っているものの例です。含まれるグループの長くて維持しにくいリストに注意してください。

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-dependency-plugin</artifactId>
  <executions>
    <execution>
      <id>unpack-litescale</id>
      <phase>prepare-package</phase>
      <goals>
        <goal>unpack-dependencies</goal>
      </goals>
      <configuration>
        <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes</outputDirectory>
        <classifier>litescale</classifier>
        <type>zip</type>
        <includeGroupIds>com.foo.group1,com.foo.group2,com.foo.group3,com.foo.group4,com.foo.group5,com.foo.group6</includeGroupIds>
      </configuration>
    </execution>
  </executions>
</plugin>

これが私が欲しいものの例です:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-dependency-plugin</artifactId>
  <executions>
    <execution>
      <id>unpack-litescale</id>
      <phase>prepare-package</phase>
      <goals>
        <goal>unpack-dependencies</goal>
      </goals>
      <configuration>
        <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes</outputDirectory>
        <classifier>litescale</classifier>
        <type>zip</type>
        <includeGroupIds>com.foo.*</includeGroupIds>
      </configuration>
    </execution>
  </executions>
</plugin>
4

2 に答える 2

2

includeGroupIds指定された値をプレフィックスとして持つすべての groupIds が含まれているようです。つまり、あなたの例では次の<includeGroupIds>com.foo</includeGroupIds>ことを行う必要があります。

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-dependency-plugin</artifactId>
  <version>3.1.0</version>
  <executions>
    <execution>
      <id>unpack-litescale</id>
      <phase>prepare-package</phase>
      <goals>
        <goal>unpack-dependencies</goal>
      </goals>
      <configuration>
        <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes</outputDirectory>
        <classifier>litescale</classifier>
        <type>zip</type>
        <includeGroupIds>com.foo</includeGroupIds>
      </configuration>
    </execution>
  </executions>
</plugin>
于 2019-01-31T11:49:01.043 に答える
0

あなたが提案している方法では、Mavenでは実際には不可能です。Maven の宣言的な意味は、事前に必要なものを知る必要があることを意味します。それを行う特定のプラグインを作成することで、ここで少し創造的になることができます。Maven Assembly Pluginも見てください。

于 2013-09-30T20:43:48.297 に答える