我需要简化一个丑陋且没有雅致的命令行:
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
config参数上发送配置。
我不确定是否可以使用属性文件作为解决方案。
有什么想法吗?
答案 0 :(得分:1)
您使用externalized configuration of Spring Boot方式将环境变量或系统属性作为源:
SPRING_APPLICATION_JSON中的属性(嵌入在 环境变量或系统属性)。
因此,您也可以将命令包装在一个bash / sh脚本中,该脚本对env变量进行赋值并运行spring boot,但实际上并不太可读:
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内联的另一种选择,您还可以将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
答案 1 :(得分:1)
您可以为此在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
我使用类似的设置,但是调用了一个不同的插件。在此代码示例中,我可能未正确设置配置。