Чтение Spring Maven из папки ресурсов - PullRequest
0 голосов
/ 30 мая 2019

Я использую Spring Boot. Я хочу прочитать файл json в папке src / main / resources.

File file = new File(this.getClass().getClassLoader().getResource(inputFileName).getFile());

Maven:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" output="target/classes" path="src/main/java">
        <attributes>
            <attribute name="optional" value="true"/>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="src" output="target/test-classes" path="src/test/java">
        <attributes>
            <attribute name="optional" value="true"/>
            <attribute name="maven.pomderived" value="true"/>
            <attribute name="test" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="output" path="target/classes"/>
</classpath>

Теперь, когда я запускаю свое приложение Spring Boot в Eclipse с помощью Spring Tools (Запуск от имени -> Spring Boot App), я получаю NoSuchFileException, и приложение пытается найти файл в / target / classes / вместо / src / папка main / resources.

Кроме того, я не вижу файл в папке / target / classes /. Почему maven не копирует его в target / classes?

Что я могу сделать, чтобы читать из папки ресурсов?

Ответы [ 2 ]

0 голосов
/ 30 мая 2019

Вам не нужно использовать файл для чтения содержимого.Вы можете просто позвонить

this.getClass().getResourceAsStream(inputFileName)

Таким образом, он будет работать независимо от того, есть ли у вас файл JAR / WAR или вы запускаете его в Eclipse.Как отметил Юань, ресурсы будут скопированы и объединены в файлы после сборки.Eclipse управляет maven classpath и добавит соответствующие записи в classpath при выполнении приложения.

0 голосов
/ 30 мая 2019

, если вы работаете в обычном Java-проекте Maven.src/main/resources находятся в пути к классам по умолчанию.Таким образом, вы можете получить доступ к файлам под ним, когда вы упаковываете с maven.Даже если в проекте Eclipse файл в resources будет скопирован в папку target/classes.Так что нет проблем.

...