Java 从Maven中的WAR类型子模块中排除属性文件
我有一个打包我的EAR项目的复杂场景,下面是一种能够完全理解它的视觉描述: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 | |
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中,类加载器首先尝试加载类本身,然后将该类的类加载委托给其父类加载器 此语句取决于您的应用程序服务器