Определение системных свойств в плагине Spring Boot

Я хотел бы указать некоторые системные свойства в моем приложении (определяется во время компиляции).

Я использую плагин весенней загрузки Maven для компиляции

В настоящее время, в соответствии с этими вопросами: Укажите системное свойство для проекта Maven Я попробовал следующую настройку (однако это не работает, как для другого плагина)

    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <mainClass>application.boot.AppStarter</mainClass>
                <systemProperties>
                    <systemProperty>
                        <name>application.version</name>
                        <value>${application.version}</value>
                    </systemProperty>
                    <systemProperty>
                        <name>release.date</name>
                        <value>${timestamp}</value>
                    </systemProperty>
                </systemProperties> 
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>

Как я могу указать свойства в этом плагине?

1 ответ

Решение

Свойства системы Java, которые вы добавляете, доступны только процессу, к которому они добавлены. Так что даже если вам удастся добавить некоторые системные свойства во время сборки Maven, их больше не будет, когда сборка будет завершена.

Что произойдет, если вы раздадите свою банку кому-то еще. Как вы ожидаете, что эти свойства будут доступны?

Решение

Обратитесь к этому сообщению, чтобы узнать, как получить доступ к artifactId и версии во время выполнения. Аналогичным образом вы можете добавить запись метки времени в src/main/resources/project.properties

buildTimestamp=${timestamp}

timestamp не является предопределенным свойством, как project.version или же project.artifactId. Так что вам придется установить извлечение метки времени из свойства Maven. ${maven.build.timestamp} и установите его как значение для вашего timestamp имущество. На этот вопрос уже дан ответ.

Другие вопросы по тегам