一般公司maven项目都是多模块,这样解耦会比较方便,但是经常会遇到多个模块的某个配置文件一样,如果每个模块都配置一个,那样最后打包会很臃肿,以下方法可以解决这个问题。
资源共享
共享资源插件可以用于在多模块构建中的模块之间共享资源。在以下示例中,我们有一组文件,我们想在项目的几个模块中复用这些资源。
设置一个用于共享资源的模块
创建一个名为common的新模块。将文件放在以下目录中,确保共享文件位于src / main / resources目录中:
common
|
+- src
| |
| `- main
| |
| `- resources
| |
| +- kafka_consumer.properties
| |
| `- redis.properties
|
`- pom.xml
共享资源的POM 应该如下所示:
<project>
...
<groupId>org.test</groupId>
<artifactId>common</artifactId>
...
<build>
<plugins>
<plugin>
<artifactId>maven-remote-resources-plugin</artifactId>
<version>1.8.0</version>
<executions>
<execution>
<goals>
<goal>bundle</goal>
</goals>
</execution>
</executions>
<configuration>
<includes>
<include>**/*.properties</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
...
</project>
这将在generate-resources阶段将共享资源捆绑到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.8.0</version>
<configuration>
<resourceBundles>
<resourceBundle>org.test:common:${project.version}</resourceBundle>
</resourceBundles>
</configuration>
<executions>
<execution>
<goals>
<goal>process</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
...
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>common</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>
这将检索common模块的捆绑资源,处理捆绑中的每个资源,并将它们放入resource-consumer模块的$ {project.build.directory} / maven-shared-archive-resources目录中。
具体学习需要查看官方文档:http://maven.apache.org/plugins/maven-remote-resources-plugin/examples/sharing-resources.html