我有两个Maven项目,一个像一个核心模块,其中包含要通过位于资源文件夹中的属性文件到达大型机的代码,另一个是soap项目,该项目将核心项目添加为依赖项(不是模块)并调用类将公开用于检索肥皂调用中的数据的方法。
在部署时,核心项目无法从soap .war文件访问.properties文件,但是在soap项目中调用核心项目类的单元测试能够访问.properties文件。
浏览了这些网址:
当我从核心开始在两个项目中运行mvn clean install时,soap项目在目标目录中都包含一个.war文件,其中包含以下文件:
manifest.mf文件夹:
web-inf文件夹:
maven-core pom是:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>zx.xy.zzz</groupId>
<artifactId>maven-core</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>maven-core</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<m2e.apt.activation>jdt_apt</m2e.apt.activation>
</properties>
<repositories>
<repository>
<id>local-maven-repo</id>
<url>file:///${basedir}/local-maven-repo</url>
</repository>
</repositories>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
maven-soap pom是:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>za.gov.deeds.registration</groupId>
<artifactId>cxf</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>cxf</name>
<dependency>
<groupId>zx.xy.zzz</groupId>
<artifactId>maven-core</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
当我尝试访问属性文件时,在我的Util.java类中,当我尝试从类路径中检索文件时得到一个空值:
Properties prop = new Properties();
try (InputStream input = ClassLoader.getSystemClassLoader().getResourceAsStream("drs.properties");) {
}
当我在tomcat9上本地部署war时,输入对象为null,但soap项目中的单元测试能够获取属性文件。
根据我所读的内容,应该在类路径中访问资源文件夹中的文件,我不知道为什么上面的代码不起作用?