我正在使用Maven程序集插件来构建我们产品的WAR(以前由Ant完成)。由于Apache Ant有很多剩余部分,因此有一个特定的要求可以简化构建过程:将特定的依赖子文件夹(例如,jar或war资源)复制到特定的目标子文件夹。
到目前为止,我了解到汇编描述符允许指定<outputDirectory>
,但是有没有机会指定<sourceDirectory>
?例如,我想将此规则应用于单个WAR或JAR类型依赖项。
考虑这个汇编描述符片段的例子(不是100%准确):
<dependencySet>
<unpack>true</unpack>
<scope>runtime</scope>
<useProjectArtifact>false</useProjectArtifact>
<includes>
<include>my-specific-dependency:war</include>
</includes>
<outputDirectory>WEB-INF/myresources</outputDirectory>
</dependencySet>
我想说我想从my-specific-dependency中复制一些文件夹:war到WEB-INF / myresources。
编辑注意:我知道这不是一个非常正确的要求,因为我们不应该知道工件内部是什么,正确的方法是声明将整个工件提取到目标目录(整洁的声明性方法)。
答案 0 :(得分:3)
您应该可以使用Maven Dependency插件执行此操作,并使用 unpack 目标: http://maven.apache.org/plugins/maven-dependency-plugin/unpack-mojo.html
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack-database-scripts</id>
<phase>compile</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>myGroup</groupId>
<artifactId>myArtifact</artifactId>
<version>1.0</version>
<type>war</type>
<overWrite>true</overWrite>
<includes>...</includes>
<outputDirectory>…</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
答案 1 :(得分:2)
首先,我建议您使用maven-war-plugin检查maven-assembly-plugin以完成该工作。此外,检查documentation有关dependencySet的内容,其中包含解压缩等选项。将模块的包装更改为war并使其适合maven约定,不要将Maven用作ant ...目前看起来像它
答案 2 :(得分:0)
事实证明,汇编描述符(因为版本2.2-beta-1)提供了unpackOptions指令,包括<dependencySet>
。正是我需要的。