我是Maven / SpringBoot的新手,并尝试使用其他Tomcat服务器端口部署存储库。
默认情况下,我很乐意在:8080上运行tomcat。但是今天,我想将Jenkins管道添加到我的项目中,并在我的Spring云网关存储库之前将tomcat部署在:8080(上面带有jenkins)。
现在,一旦我尝试部署网关,编译器显然会说address :8080 already in use
。
现在,我希望我的网关将Tomcat部署到另一个端口上(或者如果可能的话,在:8080上使用已经存在的tomcat?),所以我想使用以下命令进行部署:
$ mvn spring-boot:run -Dserver.port=8181
但是,基于:8080
的相同错误也会出现:
[错误]无法执行目标 org.springframework.boot:spring-boot-maven-plugin:1.5.8.RELEASE:run (默认CLI)在项目crw-gateway上:发生异常 运行。 null:InvocationTargetException:连接器配置为 监听8080端口无法启动。
我尝试将server.port=8080
放入application.properties
或application-dev.properties
文件中,但无法覆盖它。
有什么想法吗?如何覆盖端口?我是否可以在:8080上使用现有的tomcat服务器?
谢谢您的时间!
编辑:我的配置在〜/ config文件夹下。在那里,我有gateway.properties
,其中包括行server.port=8080
。当接受的答案断言时,它已覆盖命令行界面。将其更改为8888即可。
答案 0 :(得分:2)
根据 Spring Boot documentation :
Spring Boot使用一个非常特殊的PropertySource顺序,该顺序旨在合理地覆盖值。属性是 按以下顺序考虑:
- 主目录(激活devtools时,
测试中的~/.spring-boot-devtools.properties
上的Devtools全局设置属性)。- 测试中的
@TestPropertySource
注释。- @
SpringBootTest#properties
注释属性。- 命令行参数。
- 来自
SPRING_APPLICATION_JSON
的属性(嵌入在环境变量或系统属性中的内联JSON)。ServletConfig
初始化参数。- 来自
ServletContext
初始化参数。java:comp/env
的- JNDI属性。
- Java系统属性(
System.getProperties()
)。- OS环境变量。
- 仅在
RandomValuePropertySource
中具有属性的random.*
。- 打包的jar之外的特定于配置文件的应用程序属性(
application-{profile}.properties
和YAML变体)。- 打包在jar中的特定于配置文件的应用程序属性(
application-{profile}.properties
和YAML变体)。- 打包的jar(
application.properties
和YAML变体)之外的应用程序属性。- 打包在jar中的应用程序属性(
您的application.properties
和YAML变体)。@PropertySource
类上的@Configuration
注释。- 默认属性(通过设置
SpringApplication.setDefaultProperties
指定)。
因此,您的问题是您的命令行(4.)无法覆盖application.properties
文件配置(13.,14.,15)。
如果要覆盖server.port
属性,则需要确保在配置中遵守此顺序。