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

Java 从Maven中的WAR类型子模块中排除属性文件,java,maven,maven-war-plugin,maven-module,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 | |

我有一个打包我的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>

abc
xyz
${project.version}
战争
现在的问题是:由于每个项目都有不同版本的log4j.properties文件,如何配置Maven在打包ProjA时添加ProjA特定文件,在打包ProjB时使用其他版本

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


关于,

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

您的应用程序服务器正在将此文件夹自动添加到类路径。但要注意父级第一类/子级第一类加载

然而,在JavaEE中,类加载器首先尝试加载类本身,然后将该类的类加载委托给其父类加载器

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