我可以使用通配符来包含/排除maven依赖插件的unpack-dependencies目标中的groupID吗?

时间:2013-01-10 20:41:15

标签: maven maven-dependency-plugin

我有一个项目,其中一些依赖项具有我想要收集的辅助工件&在分发时解压缩。通过使用类型分类器参数,我能够找到这些辅助工件,这很棒。

唯一的问题是传递依赖树很大,并且大多数传递依赖都没有这个辅助工件,因此构建将永远寻找它永远找不到的东西。

我想将搜索限制为仅可能具有这些辅助工件的某些groupID。似乎 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>

2 个答案:

答案 0 :(得分:0)

对于Maven而言,这并不是你所建议的那种方式。 Maven的声明意义,你需要知道你想要的东西。你可以通过编写特定的插件来实现这一点。另请查看Maven Assembly Plugin

答案 1 :(得分:0)

似乎includeGroupIds包含所有以提供的值作为前缀的groupId。即在您的示例中,<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>