代码之家  ›  专栏  ›  技术社区  ›  Heetola

在maven依赖插件解包目标期间不复制路径

  •  3
  • Heetola  · 技术社区  · 10 年前

    嗨,希望将jar中的一些文件复制到我的java项目的根文件夹中。

    我用了这个:

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>unpack</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>unpack</goal>
                        </goals>
                        <configuration>
                            <artifactItems>
                                <artifactItem>
                                <groupId>net.sourceforge.tess4j</groupId>
                                <artifactId>tess4j</artifactId>
                                <version>1.4.1</version>
                                <type>jar</type>
                                <includes>win32-x86/*.dll</includes>
                                <overWrite>true</overWrite>
                                <outputDirectory>${basedir}</outputDirectory> <!-- project root directory -->
                            </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    

    问题是我明白了

    javaProject
        src
        target
        win32-x86/dll1.dll
        win32-x86/dll2.dll
    

    我想要这个

    javaProject
        src
        target
        dll1.dll
        dll2.dll
    

    我不想复制jar内部的文件夹路径,我只想将文件转储到项目的根目录中。

    有什么想法吗?

    谢谢

    3 回复  |  直到 10 年前
        1
  •  2
  •   Wim Deblauwe    10 年前

    您可以使用Jetspeed解包maven插件: http://pulkitsinghal.blogspot.be/2011/04/jetspeed-finally-unpack-plugin-with.html

    看见 http://portals.apache.org/jetspeed-2/buildguide/jetspeed-unpack-plugin.html 以获取文档。

    您需要的选项是:

    <flat>true</flat>
    

    完整示例:

    <plugin>
      <groupId>org.apache.portals.jetspeed-2</groupId>
      <artifactId>jetspeed-unpack-maven-plugin</artifactId>
      <version>${org.apache.portals.jetspeed.version}</version>
      <configuration>
    
        <unpack>
          <artifact>...</artifact>
          <file>...</file>
          <targetDirectory>...</targetDirectory>
          <overwrite>...</overwrite>            
          <resources combine.children="append">
    
            <resource>
              <path>...</path>
              <destination>...</destination>
              <overwrite>...</overwrite>
              <flat>...</flat>
              <include>...</include>
              <exclude>...</exclude>
              <name>...</name>
            </resource>
            ...
          </resources>
        </unpack>
    
        <skip>...</skip>
        <verbose>...</verbose>
    
      </configuration>
    </plugin>
    
        2
  •  0
  •   user1050755    9 年前

    您可以使用

            <plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>test-compile</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <tasks>
                        <move todir="${libPath}">
                            <fileset dir="${libPath}"/>
                            <mapper type="flatten"/>
                        </move>
                    </tasks>
                </configuration>
            </plugin>
    

    以在之后使结果变平。

        3
  •  0
  •   Greg    6 年前

    类似的选项,只是另一个选项,以防答案无效。 解压缩到临时目录:

                <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>${maven-dependency-plugin.version}</version>
                <executions>
                    <execution>
                        <id>unpack-fonts</id>
                        <phase>process-resources</phase>
                        <goals>
                            <goal>unpack</goal>
                        </goals>
                        <configuration>
                            <artifactItems>
                                <artifact>
                                    <groupId>org.webjars</groupId>
                                    <artifactId>font-awesome</artifactId>
                                    <version>${font-awesome.version}</version>
                                    <type>jar</type>
                                    <overWrite>false</overWrite>
                                </artifact>
                            </artifactItems>
                            <!-- Make sure you have the actual folder name that is in the webjar -->
                            <includes>**/webfonts/**/*</includes>
                            <outputDirectory>${project.build.directory}/unpacked</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
    

    打开包装后:

    <!-- maven-dependency-plugin does copying too, however; it doesn't seem to be able to flatten the directory structure -->
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.1.0</version>
                <executions>
                    <execution>
                        <id>copy-files</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/where/you/want /files</outputDirectory>
                            <resources>
                                <resource>
                                    <directory>${project.build.directory}/where/you/unpacked/files</directory>
                                    <includes>
                                        <include>**/*</include>
                                    </includes>
                                    <filtering>false</filtering>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>