不要在 maven-dependency-plugin 解包目标期间重现路径
Do not reproduce path during maven-dependency-plugin unpack goal
您好,我想将 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 中的文件夹路径,我只想将文件转储到我项目的根目录中。
有什么想法吗?
谢谢。
您可以使用 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>
您可以使用
<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>
之后将结果展平。
类似的选项,只是另一个选项,以防答案无效。
解压到临时目录:
<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>
您好,我想将 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 中的文件夹路径,我只想将文件转储到我项目的根目录中。
有什么想法吗?
谢谢。
您可以使用 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>
您可以使用
<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>
之后将结果展平。
类似的选项,只是另一个选项,以防答案无效。 解压到临时目录:
<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>