Maven:无法为tomcat服务器覆盖server.port

时间:2018-07-06 09:17:16

标签: java spring maven tomcat jenkins

我是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.propertiesapplication-dev.properties文件中,但无法覆盖它。

有什么想法吗?如何覆盖端口?我是否可以在:8080上使用现有的tomcat服务器?

谢谢您的时间!

编辑:我的配置在〜/ config文件夹下。在那里,我有gateway.properties,其中包括行server.port=8080。当接受的答案断言时,它已覆盖命令行界面。将其更改为8888即可。

1 个答案:

答案 0 :(得分:2)

根据 Spring Boot documentation

  

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

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

因此,您的问题是您的命令行(4.)无法覆盖application.properties文件配置(13.,14.,15)。

如果要覆盖server.port属性,则需要确保在配置中遵守此顺序。