Maven spring-boot: run цель: упростить командную строку - PullRequest
0 голосов
/ 31 августа 2018

Мне нужно упростить некрасивую и не элегантную командную строку:

mvn -pl rep-digital-api spring-boot:run -Dspring.application.json='{ "server.port": 8081, "spring": { "datasource": { "url": "jdbc:postgresql://localhost:5432/frontoffice", "username": "frontoffice", "password": "password", "driverClassName": "org.postgresql.Driver" }, "redis": { "host": "localhost", "port": 6379 } }, "api.url-oauth": "http://localhost:8081/oauth/token", "url-ui": "http://localhost:3000", "document.upload-dir":"/home/jcabre/data/upload", "document.pending-key":"server3-pending" }'

Как вы можете понять, мне нужно только отправить конфигурацию на spring.application.json параметр конфигурации.

Не знаю, можно ли использовать файлы свойств.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Вы можете определить профили в вашем pom.xml для этого и использовать properties-maven-plugin, но вам нужен профиль по умолчанию без изменений, и этот.

<profiles>
    <profile>
        <id>deflt</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <activeprofile>deflt</activeprofile>
        </properties>
    </profile>
    <profile>
        <id>local</id>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>
        <properties>
            <activeprofile>local</activeprofile>
        </properties>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>properties-maven-plugin</artifactId>
                    <version>1.0.0</version>
                    <executions>
                        <execution>
                            <id>local-run</id>
                            <configuration>
                                <properties>
                                    <spring.application.json>{ "server.port": 8081, "spring": { "datasource": { "url": "jdbc:postgresql://localhost:5432/frontoffice", "username": "frontoffice", "password": "password", "driverClassName": "org.postgresql.Driver" }, "redis": { "host": "localhost", "port": 6379 } }, "api.url-oauth": "http://localhost:8081/oauth/token", "url-ui": "http://localhost:3000", "document.upload-dir":"/home/jcabre/data/upload", "document.pending-key":"server3-pending" }</spring.application.json>
                                </properties>
                            </configuration>
                            <goals>
                                <goal>set-system-properties</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

Тогда ваша командная строка становится mvn -pl rep-digital-api spring-boot:run -P local

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

0 голосов
/ 31 августа 2018

Вы используете внешнюю конфигурацию Spring Boot , которая имеет в качестве источника переменную среды или системное свойство:

Свойства из SPRING_APPLICATION_JSON (встроенный JSON, встроенный в переменная окружения или системное свойство).

Таким образом, в качестве альтернативы вы можете заключить команду в скрипт bash / sh, который оценивает переменную env и запускает весеннюю загрузку, но на самом деле это не более читабельно:

SPRING_APPLICATION_JSON = '{ "server.port": 8081, "spring": { "datasource": { "url": "jdbc:postgresql://localhost:5432/frontoffice", "username": "frontoffice", "password": "password", "driverClassName": "org.postgresql.Driver" }, "redis": { "host": "localhost", "port": 6379 } }, "api.url-oauth": "http://localhost:8081/oauth/token", "url-ui": "http://localhost:3000", "document.upload-dir":"/home/jcabre/data/upload", "document.pending-key":"server3-pending" }'        
mvn -pl rep-digital-api spring-boot:run 

Как и другая альтернатива JSON Inline, вы также можете указать JSON в качестве переменной JNDI, как указано ниже: java:comp/env/spring.application.json., но использование JDNI для этого кажется немного сложным и недостаточно видимым.

На самом деле вы цените много объектов недвижимости. Таким образом, использование внешнего конфигурационного файла кажется лучше для чтения / обновления. Я советую вам определить их в свойствах или внешнем файле YAML:

mvn -pl rep-digital-api spring-boot:run 
-Dspring-boot.run.arguments=-spring.config.location=classpath:/foo.properties 

или используйте spring.config.additional-location, чтобы добавить и не переопределять местоположения по умолчанию (из Spring Boot 2):

mvn -pl rep-digital-api spring-boot:run 
-Dspring-boot.run.arguments=--spring.config.additional-location=classpath:/foo.properties 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...