【问题标题】:Maven packing properties fileMaven 打包属性文件
【发布时间】:2015-12-02 11:36:54
【问题描述】:
我有一个 Maven 多模块项目,分层如下。
test-integration
- test-integration.properties
test-services
- test-services.properties
test-persistence
- test-persistence.properties
每个项目中都有一个属性文件。我应该如何配置 maven 以从 jar 中排除所有 *.properties,同时将它们全部提取到配置文件夹中?
- test-integration/target/lib/test-integration.jar
- test-integration/target/lib/test-service.jar
- test-integration/target/lib/test-persistence.jar
- test-integration/target/config/test-integration.properties
- test-integration/target/config/test-service.properties
- test-integration/target/config/test-persistence.properties
【问题讨论】:
标签:
java
maven
maven-3
maven-jar-plugin
【解决方案1】:
您可以在您的聚合器/父项目中添加以下内容(以便将其应用于所有声明的模块):
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<excludes>
<exclude>**/test-*.properties</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/conf</outputDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>test-*.properties</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
详细说明:
- Maven Jar 插件从打包的 jar 中排除属性文件,它还将
target 目录配置为 lib(如您在问题中所述)
- Maven 资源插件正在将任何以 test- 开头并由
src/main/resources 文件夹提供的属性文件复制到 target/conf 目录(同样,如上所述)。
我在一个示例项目中进行了测试,效果很好。
另请注意:您的 IDE 可能会将 conf 目录显示为项目的一部分(将其视为新目录资源,它发生在 Eclipse 中):这不是创建的新文件夹,而是显示在不同的看法。如果你真的不想产生这种副作用,那么考虑使用 maven-antrun-plugin 而不是 Resources 插件。