Maven WAR 覆盖 - 将资源合并到不同的路径
Maven WAR overlay - merge resources into a different path
我正在使用 maven 4.0.0。我在 maven-war-plugin 中使用覆盖将 app1 合并到 app2 中。我想将 app1 中的一些目录合并到 app2 中的不同位置。本质上是将 SomeContent 目录中的内容向上移动一级。这可能吗?我需要以某种方式使用 maven-resources-plugin 吗?
以下是 app1 的 war 中有问题的文件:
SomeContent/admin/index.jsp
SomeContent/images/header.png
我想在覆盖后 app2 的 war 中得到这样的文件:
admin/index.jsp <-- from app1
images/header.png <-- from app1
app2.jsp <-- from app2
WEB-INF/... <-- from app2
... <-- from app2
app1 的 pom:
<groupId>com.testing</groupId>
<artifactId>app1</artifactId>
<packaging>war</packaging>
...
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.3</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
</configuration>
</plugin>
app2 的 pom:
<groupId>com.testing</groupId>
<artifactId>app2</artifactId>
<packaging>war</packaging>
...
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.3</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
<overlays>
<overlay>
<groupId>com.testing</groupId>
<artifactId>app1</artifactId>
</overlay>
</overlays>
</configuration>
</plugin>
我明白了。覆盖 war 解压到(默认)target/war/work/<groupId>/<artifactId>
目录。所以我在覆盖中排除了我想要的不同路径的目录,并确保覆盖在当前构建之前执行。然后我添加了一个资源来将有问题的目录复制到构建目录中,然后将其添加到我指定路径的 war 中。
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.3</version>
<configuration>
<overlays>
<overlay>
<groupId>com.testing</groupId>
<artifactId>app1</artifactId>
<excludes>
<exclude>SomeContent/**</exclude>
</excludes>
</overlay>
<overlay><!-- empty groupId/artifactId represents the current build --></overlay>
</overlays>
<webResources>
...
<resource>
<directory>target/war/work/com.testing/app1/SomeContent</directory>
</resource>
</webResources>
</configuration>
</plugin>
我正在使用 maven 4.0.0。我在 maven-war-plugin 中使用覆盖将 app1 合并到 app2 中。我想将 app1 中的一些目录合并到 app2 中的不同位置。本质上是将 SomeContent 目录中的内容向上移动一级。这可能吗?我需要以某种方式使用 maven-resources-plugin 吗?
以下是 app1 的 war 中有问题的文件:
SomeContent/admin/index.jsp
SomeContent/images/header.png
我想在覆盖后 app2 的 war 中得到这样的文件:
admin/index.jsp <-- from app1
images/header.png <-- from app1
app2.jsp <-- from app2
WEB-INF/... <-- from app2
... <-- from app2
app1 的 pom:
<groupId>com.testing</groupId>
<artifactId>app1</artifactId>
<packaging>war</packaging>
...
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.3</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
</configuration>
</plugin>
app2 的 pom:
<groupId>com.testing</groupId>
<artifactId>app2</artifactId>
<packaging>war</packaging>
...
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.3</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
<overlays>
<overlay>
<groupId>com.testing</groupId>
<artifactId>app1</artifactId>
</overlay>
</overlays>
</configuration>
</plugin>
我明白了。覆盖 war 解压到(默认)target/war/work/<groupId>/<artifactId>
目录。所以我在覆盖中排除了我想要的不同路径的目录,并确保覆盖在当前构建之前执行。然后我添加了一个资源来将有问题的目录复制到构建目录中,然后将其添加到我指定路径的 war 中。
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.3</version>
<configuration>
<overlays>
<overlay>
<groupId>com.testing</groupId>
<artifactId>app1</artifactId>
<excludes>
<exclude>SomeContent/**</exclude>
</excludes>
</overlay>
<overlay><!-- empty groupId/artifactId represents the current build --></overlay>
</overlays>
<webResources>
...
<resource>
<directory>target/war/work/com.testing/app1/SomeContent</directory>
</resource>
</webResources>
</configuration>
</plugin>