3

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

唯一的问题是传递依赖树非常大,并且大多数传递依赖没有这个辅助工件,所以构建需要永远寻找它永远找不到的东西。

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

2 回答 2

2

似乎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>
于 2019-01-31T11:49:01.043 回答
0

以您建议的方式使用 Maven 是不可能的。Maven 的声明性意思是你需要预先知道你想要什么。通过编写可以做到这一点的特定插件,您可以在这里有点创意。另请查看Maven 程序集插件

于 2013-09-30T20:43:48.297 回答