不改变代码的情况下更改Spring Boot应用程序的端口

5
我有两个需要同时运行的应用程序,它们都试图在端口8080上运行。我想将其中一个更改为端口9000。我要更改的应用程序具有Spring Security,因此在使用https时它运行在端口8443上,在使用http时运行在端口8080上。我必须将它从端口8080移动而不更改任何.java文件。另外,我还需要在端口8080上运行另一个应用程序,因此更改默认的tomcat端口并不是一个好主意。
我尝试在application.properties中添加以下行:server.port=9000spring.main.server.port=9000,然后运行mvn install,最后运行java -jar target/app.jar
我还尝试使用不同的标志运行java -jar target/app.jar-Dserver.port=9000--server.port=9000
无论如何,我得到的是- Tomcat started on port(s): 8443 (https) 8080 (http)
所以,我的问题是:
  • 如何使其在与8080不同的端口上运行?
  • 以及,是什么导致配置文件未更改端口?

Spring Boot默认只会在单个端口上启动,因此您的应用程序必须包含一些配置Tomcat连接器的代码。我怀疑该代码会阻止server.port产生任何效果,可能是因为端口号已经硬编码了。您能否分享一下配置Tomcat连接器的代码? - Andy Wilkinson
1个回答

6

运行以下命令:

mvn spring-boot:run -Drun.jvmArguments='-Dserver.port=8088'

将以下的插件添加到你的pom.xml文件中。
<build>
    . . . 
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

为什么不直接使用-Dserver.port=8088呢? - Slava Semushin
3
从Spring Boot 2开始,您应该使用spring-boot.run.jvmArguments - mapm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接