远程资源插件还可用于在多模块构建中的模块之间共享资源。在以下示例中,我们有一组文件用于为数据库设置测试环境。我们希望在项目的几个模块中重用这些资源。
创建一个名为shared-resources的新模块。将文件放在如下所示的目录布局中,确保您的资源文件位于src/main/resources目录中:
shared-resources | +- src | | | `- main | | | `- resources | | | +- database.ddl | | | `- database.sql | `- pom.xml
共享资源的 POM应如下所示:
<project>
...
<groupId>org.test</groupId>
<artifactId>shared-resources</artifactId>
...
<build>
<plugins>
<plugin>
<artifactId>maven-remote-resources-plugin</artifactId>
<version>1.7.0</version>
<executions>
<execution>
<goals>
<goal>bundle</goal>
</goals>
</execution>
</executions>
<configuration>
<includes>
<include>**/*.ddl</include>
<include>**/*.sql</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
...
</project>这将在生成资源阶段将共享资源捆绑在一个 JAR 文件中。这意味着其他模块可以在之后的任何阶段消耗这些资源。
要在另一个模块中使用共享资源,您需要按如下方式配置插件:
<project>
...
<groupId>org.test</groupId>
<artifactId>resource-consumer</artifactId>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-remote-resources-plugin</artifactId>
<version>1.7.0</version>
<configuration>
<resourceBundles>
<resourceBundle>org.test:shared-resources:${project.version}</resourceBundle>
</resourceBundles>
</configuration>
<executions>
<execution>
<goals>
<goal>process</goal>
</goals>
</execution>
</executions>
</plugin>
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sql-maven-plugin</artifactId>
<version>1.4</version>
...
<!-- Not showing dependencies or configuration here for brevity -->
...
<executions>
<execution>
<id>create-schema</id>
<phase>process-test-resources</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<autocommit>true</autocommit>
<srcFiles>
<srcFile>${project.build.directory}/maven-shared-archive-resources/database.ddl</srcFile>
<srcFile>${project.build.directory}/maven-shared-archive-resources/database.sql</srcFile>
</srcFiles>
</configuration>
</execution>
...
</executions>
</plugin>
</plugins>
</build>
...
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>shared-resources</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>这将检索共享资源模块的捆绑资源,处理捆绑中的每个资源并将它们放在资源消费者模块的${project.build.directory}/maven-shared-archive-resources目录中。
这意味着我们可以使用 SQL Maven 插件中的这些文件来使用 DDL 文件设置数据库模式,并使用 SQL 文件将一些数据添加到数据库中。