从Maven中的WAR类型子模块中排除属性文件

时间:2014-12-11 09:28:25

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

我有一个复杂的包装我的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文件,如何在打包ProjA时配置Maven添加ProjA特定文件并在打包ProjB时使用其他版本?

如果你不理解混乱的情况,请告诉我。)。

此致

1 个答案:

答案 0 :(得分:0)

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

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

您的Application Server会自动将此文件夹添加到Class-Path。但要注意父母第一次/孩子第一次加载

请参阅Java EE and Java SE classloading

  

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

此声明取决于您的Application Server。