更新:在重读这个问题时,我意识到我遗漏了我的测试项目中的子目录,所以它当然对我有效,对此我感到抱歉。
据我所知,在war overlay或依赖插件中都没有将工件的子文件夹解包到目录并排除路径的父元素的机制,这两者都将为您提供完整的相对路径。
但是,您可以使用解包目标将存档解包到临时文件夹,然后使用
antrun-plugin
将所需子文件夹复制到它们的最终休息位置。
下面的配置就是这样做的(我还没有对此进行测试,所以如果有任何遗漏,请参阅文档了解确切的细节,非常抱歉)。注意,执行处于同一阶段,但是只要在Antrun插件之前配置了依赖插件,就可以首先执行它。注意,准备包对于Maven2.1是新的,如果您使用的是旧版本,则需要使用另一个阶段。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack-lib</id>
<phase>prepare-package</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>org.eclipse.birt</groupId>
<artifactId>report-engine</artifactId>
<version>2.3.2</version>
<type>jar</type>
<overWrite>false</overWrite>
</artifactItem>
</artifactItems>
<!--unpack all three folders to the temporary location-->
<includes>ReportEngine/lib/*,ReportEngine/configuration/*,ReportEngine/plugins/*</includes>
<outputDirectory>${project.build.directory}/temp-unpack</outputDirectory>
<overWriteReleases>false</overWriteReleases>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>prepare-package</phase>
<configuration>
<tasks>
<!--now copy the configuration and plugin sub-folders to WEB-INf/platform-->
<copy todir="${project.build.directory}/WEB-INF/platform">
<fileset dir="${project.build.directory}/temp-unpack/ReportEngine/configuration"/>
<fileset dir="${project.build.directory}/temp-unpack/ReportEngine/plugins"/>
</copy>
<!--copy the lib sub-folder to WEB-INf/lib-->
<copy todir="${project.build.directory}/WEB-INF/lib">
<fileset dir="${project.build.directory}/temp-unpack/ReportEngine/lib"/>
</copy>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>