【问题标题】:Exclude properties file from a WAR type sub-module in Maven从 Maven 中的 WAR 类型子模块中排除属性文件
【发布时间】:2015-02-09 17:32:24
【问题描述】:

我有一个打包我的 EAR 项目的复杂场景,下面是完全理解它的视觉描述:

ProjA.ear
 |-- ProjA.war
 |-- Util.war
 |   |-- WEB-INF
 |   |   |-- classes
 |   |   |   -- log4j.properties

同样,我还有另一个项目,其结构是:

ProjB.ear
 |-- ProjB.war
 |-- Util.war
 |   |-- WEB-INF
 |   |   |-- classes
 |   |   |   -- log4j.properties

Util.war 是 ProjA 和 ProjB 的通用项目(log4j.properties 除外)。

以下是我如何在 ProjA 和 ProjB 中指定 Util.war 的依赖关系:

    <dependency>
        <groupId>abc</groupId>
        <artifactId>xyz</artifactId>
        <version>${project.version}</version>
        <type>war</type>
    </dependency>

现在的问题是:由于每个项目都有不同版本的 log4j.properties 文件,我如何配置 Maven 以在打包 ProjA 时添加 ProjA 特定文件并在打包 ProjB 时使用其他版本?

如果您不理解混乱的场景,请告诉我:)。

问候,

【问题讨论】:

    标签: java maven maven-war-plugin maven-module


    【解决方案1】:

    我认为您可以将 log4j.properties 从 Util.war 中删除,因为它取决于应用程序。相反,您可以为此使用 ProjA.ear/APP-INF/classes 和 ProjB/APP-INF/classes 文件夹。

    What difference between app-inf and web-inf folders in JavaEE applications?

    您的应用程序服务器正在自动将此文件夹添加到 Class-Path。但要注意父类/子类加载

    Java EE and Java SE classloading

    但是,在 Java EE 中,类加载器首先尝试加载类本身,然后将该类的类加载委托给其父类加载器。

    此语句取决于您的应用程序服务器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-29
      • 2018-06-21
      • 2017-01-02
      • 1970-01-01
      相关资源
      最近更新 更多