使用 maven 依赖插件时如何剥离子目录

mic*_*nko 7 java maven maven-dependency-plugin

有一个具有以下结构的 jar 文件:

/--
  |-dir1
   |-file1
   |-file2
   |-file3
  |-dir2
  |-dir3
Run Code Online (Sandbox Code Playgroud)

我将过滤器设置为仅从 dir1 获取文件

/--
  |-dir1
   |-file1
   |-file2
   |-file3
  |-dir2
  |-dir3
Run Code Online (Sandbox Code Playgroud)

它成功地仅从该目录中获取文件,但在目标目录中复制的文件放置在 dir1 中,如何从复制的文件中删除路径并仅保留名称。所以file1将被复制到target/file1而不是target/dir1/file1

<includes>dir1/*</includes>
Run Code Online (Sandbox Code Playgroud)

Ada*_*dam 9

maven-dependency-plugin 的 3.1.2 版本中添加了对 fileMappers 标签的支持。

查看官方文档重写目标路径和文件名

例如,您可以提取嵌套的 .so 文件并将其放置在顶层

<artifactItem>
    <groupId>net.java.dev.jna</groupId>
    <artifactId>jna</artifactId>
    <version>4.2.2</version>
    <includes>com/sun/jna/linux-x86/*.so</includes>
    <fileMappers>
        <fileMapper implementation="org.codehaus.plexus.components.io.filemappers.FlattenFileMapper"/>
    </fileMappers>
    <outputDirectory>${project.build.directory}/extracted-libs/</outputDirectory>
</artifactItem>
Run Code Online (Sandbox Code Playgroud)


bma*_*ies 0

我不知道有什么办法可以做你想做的事。如果我遇到你的问题,我会使用 antrun 插件重新排列,或者我会构建一个不同的工件来提取。