Springboot application.properites не читается - PullRequest
0 голосов
/ 24 апреля 2019

Я разработал приложение Springboot с Maven в Eclipse.Класс, аннотированный @SpringBootApplication, считывает application.properties внутри src / main / resources.Внутри Eclipse все работает отлично.Используя Maven, я создал толстый jar, вот этот плагин, который я использую:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
            <configuration>
                <classifier>exec</classifier>
            </configuration>
        </execution>
    </executions>
</plugin>

В целевой папке сгенерировано 2 jar, один с именем fatjar-exec.jar, а другой fatjar.jar,Когда я запускаю команду java -jar fatjar-exec.jar, возникает исключение, так как приложение не может прочитать файл application.properties.Я также разархивировал jar и правильно applciation.properties находится в папке BOOT-INF / classes.Есть намеки?

Ответы [ 2 ]

2 голосов
/ 24 апреля 2019

Пожалуйста, сравните содержимое сгенерированных фатжаров.Обычный (без exec) имеет только одну копию классов Springboot, в то время как один, сгенерированный с помощью классификатора, имеет два.

  • один под /org/springframework/boot/loader (ожидается)
  • второй под/BOOT-INF/classes/org/springframework/boot/loader

Вероятно, порядок поиска по пути к классам приводит к тому, что файл из неожиданного местоположения выбирается, и он не может найти свойства в /BOOT-INF/classes

IMHO, самой простой версиилучше всего работает:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

Проверьте Настраиваемый классификатор переупаковки для получения подробных сведений о настройке maven, если вы хотите сохранить исходный файл (вы пропустили <id>repackage</id>).

0 голосов
/ 24 апреля 2019

Это тоже хорошо работает для меня. Мой POM.xml выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<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>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>
    <groupId>xxx</groupId>
    <artifactId>yyy</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <packaging>jar</packaging>
    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>   
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                        <configuration>
                            <classifier>exec</classifier>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

пакет mvn -DskipTests

java -jar xxx-0.0.1-SNAPSHOT.jar

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...