繁体   English   中英

maven:无法覆盖 tomcat 服务器的 server.port

[英]maven: can't override server.port for tomcat server

我是 Maven/SpringBoot 的新手,正在尝试部署具有不同 Tomcat 服务器端口的存储库。

默认情况下,我很乐意在 8080 上运行 tomcat。 但是今天,我想在我的项目中添加 Jenkins 管道,我在 spring 云网关存储库之前部署了 tomcat on:8080(上面有 jenkins)。

现在,一旦我尝试部署网关,编译器显然会说address:8080 already in use

现在,我希望我的网关在另一个端口上部署 Tomcat(或者如果可能的话在 8080 上使用已经存在的 tomcat?)所以我想使用这个命令来部署它:

$ mvn spring-boot:run -Dserver.port=8181

但是,基于:8080的相同错误恰好出现:

[错误] 无法在项目 crw-gateway 上执行目标 org.springframework.boot:spring-boot-maven-plugin:1.5.8.RELEASE:run (default-cli):运行时发生异常。 null:InvocationTargetException:配置为侦听端口 8080 的连接器无法启动。

我尝试将server.port=8080放入application.propertiesapplication-dev.properties文件,但我无法覆盖它。

有任何想法吗? 我怎样才能覆盖端口? 有没有可能我可以在 8080 上使用现有的 tomcat 服务器?

感谢您的时间!

编辑:我的配置在 ~/config 文件夹下。 在那里,我有gateway.properties ,其中包括server.port=8080行。 正如已接受的答案所断言的那样,它已经覆盖了命令行界面。 将其更改为 8888 有效。

根据Spring 引导文档

Spring Boot 使用非常特殊的 PropertySource 顺序,该顺序旨在允许合理地覆盖值。 按以下顺序考虑属性:

  1. 主目录上的 Devtools 全局设置属性( ~/.spring-boot-devtools.properties当 devtools 处于活动状态时)。
  2. 测试上的@TestPropertySource注释。
  3. @ SpringBootTest#properties测试上的注释属性。
  4. 命令行 arguments。
  5. 来自SPRING_APPLICATION_JSON的属性(嵌入在环境变量或系统属性中的内联 JSON)。
  6. ServletConfig初始化参数。
  7. ServletContext初始化参数。
  8. 来自java:comp/env的 JNDI 属性。
  9. Java 系统属性 ( System.getProperties() )。
  10. 操作系统环境变量。
  11. 仅在random.*中具有属性的RandomValuePropertySource
  12. 打包的 jar( application-{profile}.properties和 YAML 变体)之外的特定于配置文件的应用程序属性。
  13. 打包在您的 jar 中的特定于配置文件的应用程序属性( application-{profile}.properties和 YAML 变体)。
  14. 打包 jar 之外的应用程序属性( application.properties和 YAML 变体)。
  15. 打包在您的 jar 中的应用程序属性( application.properties和 YAML 变体)。
  16. @Configuration类上的@PropertySource注释。
  17. 默认属性(通过设置SpringApplication.setDefaultProperties指定)。

所以你的问题是你的命令行 (4.) 不能覆盖application.properties文件配置 (13., 14., 15.)。

如果你想覆盖server.port属性,你需要确保在你的配置中遵守这个顺序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM