У меня есть два проекта maven, один из которых, как основной модуль, содержит код для мэйнфрейма через файл свойств, расположенный в папке ресурсов, другой - мыльный проект, который добавляет основной проект как зависимость (не модуль) и вызывает классы, которые будут предоставлять методы для извлечения данных в мыльных вызовах.
Основной проект не может получить доступ к файлу .properties из файла soap .war при развертывании, но модульные тесты в проекте soap, который вызывает классы основного проекта, могут получить доступ к файлу .properties.
Пройдя через эти URL:
- http://www.avajava.com/tutorials/lessons/how-do-i-add-a-project-as-a-dependency-of-another-project.html
- https://maven.apache.org/plugins/maven-remote-resources-plugin/usage.html
Когда я запускаю mvn clean install в обоих проектах, начиная с ядра, проект soap содержит файл .war в целевом каталоге со следующими файлами:
папка manifest.mf:
- Манифест-Версия: 1.0
- Встроенный: admin
- Создано: Apache Maven 3.6.0
- Build-Jdk: 1.8.0_171
папка web-inf:
- папка lib
- классы \ классы
- классы \ Classes \ config.properties
- web.xml
- CXF-servlet.xml
мавен-ядро пом:
<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>
мавен-мыло пом:
<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, но модульный тест в проекте soap может получить файл свойств.
Согласно тому, что я прочитал, файлы в папке ресурсов должны быть доступны в classpath, я не могу понять, почему вышеприведенный код не работает?