【问题标题】: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 插件。

    【讨论】:

      猜你喜欢
      • 2011-04-06
      • 2021-05-06
      • 1970-01-01
      • 2019-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-09
      • 1970-01-01
      相关资源
      最近更新 更多