我想使用像这样的叠加层来复制没有文件夹结构的“file.xml”:
<overlays>
<overlay>
<groupId>com.mygroup</groupId>
<artifactId>my_comp</artifactId>
<includes>
<include>WEB-INF/folder1/folder2/file.xml</include>
</includes>
<targetPath>WEB-INF/otherFolder</targetPath>
<type>war</type>
</overlay>
</overlays>
换句话说:从 WEB-INF / folder1 / folder2 / 复制 file.xml 并放置到 WEB-INF / otherFolder
有什么想法吗?
答案 0 :(得分:2)
我没有找到如何通过叠加来解决问题。所以我不得不使用两个插件 maven-dependency-plugin 和 maven-war-plugin
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.1</version>
<executions>
<execution>
<id>copy</id>
<phase>process-resources</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.mygroup</groupId>
<artifactId>my_comp</artifactId>
<type>war</type>
<overWrite>true</overWrite>
<outputDirectory>${project.build.directory}/tmp</outputDirectory>
<includes>WEB-INF/folder1/folder2/file.xml</includes>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1-beta-1</version>
<configuration>
<webResources>
<resource>
<directory>${project.build.directory}/tmp/WEB-INF/folder1/folder2</directory>
<targetPath>WEB-INF/otherFolder</targetPath>
</resource>
</webResources>
</configuration>
</plugin>
第一个附加到 process-resources 阶段的插件。当所有叠加组合时,第二个在阶段包上调用。 叠加层采用先赢策略(因此如果文件已被叠加层复制,则不会再被复制)如果我复制了我的file.xml(通过插件),那么它不会被任何叠加覆盖。
太复杂了!
答案 1 :(得分:0)
据我所知,叠加是不可能的,叠加的内容“按原样”添加到targetPath(默认为webapp的根结构)。
如果您想在其他位置提供 file.xml ,则必须在覆盖之前在my_comp
WAR 中调整其位置。< / p>