在maven-dependency-plugin unpack目标期间不要重现路径

时间:2015-02-04 18:27:13

标签: maven maven-3 unpack maven-dependency-plugin

您希望将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 个答案:

答案 0 :(得分:2)

您可以使用Jetspeed unpack 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>

答案 1 :(得分:0)

您可以使用

        <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>

之后将结果弄平。

答案 2 :(得分:0)

相似的选项,只是另一个选择,以防答案不起作用。 解压到一个临时目录:

            <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>