当用Maven启动时,Tomcat的备用端口(不是8080)?

有没有一个简单的方法来指定一个替代端口的Tomcat在POM或命令行。 我想有几个项目在同一台机器上运行。

我知道这个线程是旧的,但…

Greg提供的文档链接很有趣:

port: The port to run the Tomcat server on. Type: int Required: No Expression: ${maven.tomcat.port} Default: 8080 

这个expression式是maven用来在代码中获取值的。 它可能来自configuration文件或来自命令行。

你可以跑

 mvn -Dmaven.tomcat.port=8181 tomcat:run-war 

当我有几个同时运行集成testing阶段的小型servlet时,也遇到了类似的问题,由于这些servlet被configuration为使用相同的端口,这成为一个问题。 但是由于build-helper-maven-plugin:reserve-network-port的目标,可以获得随机的端口号。 然后,我可以创build一个包含http:// localhost:[port] / [servletname]的URL,这个URL被送入 Javatesting类。

检索随机端口

 <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>1.7</version> <executions> <execution> <id>reserve-network-port</id> <goals> <goal>reserve-network-port</goal> </goals> <phase>pre-integration-test</phase> <configuration> <portNames> <portName>tomcat.http.port</portName> </portNames> </configuration> </execution> </executions> 

用端口启动tomcat

 <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat6-maven-plugin</artifactId> <configuration> <port>${tomcat.http.port}</port> <useTestClasspath>true</useTestClasspath> </configuration> .... </plugin> 

将URL提供给由故障安全插件运行的Java集成testing

 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-failsafe-plugin</artifactId> <version>2.12.3</version> .... <configuration> <systemPropertyVariables> <integration-test.url>http://localhost:${tomcat.http.port}/${project.build.finalName}/</integration-test.url> </systemPropertyVariables> </configuration> </plugin> 

Java代码

 public class DownloadAreaIT { private static final String URL = System.getProperty("integration-test.url"); } 

使用tomcat-maven-plugin上给出的语法,你可以直接指定端口:

 <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>tomcat-maven-plugin</artifactId> <configuration> <server>tomcat-development-server</server> <port>9966</port> </configuration> </plugin> 

下面为我​​工作:

  <properties> <maven.tomcat.port>9090</maven.tomcat.port> </properties> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <port>${maven.tomcat.port}</port> </configuration> </plugin> 

您可以通过添加属性端口来永久添加端口configuration。

 <build> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.0</version> <configuration> <port>9090</port> </configuration> </plugin> </plugins> </build> 

如果您使用的是maven tomcat插件,则可以通过将插件configuration块添加到pom.xml来指定context.xml :

 <project> ... <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>tomcat-maven-plugin</artifactId> <version>1.0-beta-1</version> <configuration> <mode>both</mode> </configuration> </plugin> </plugins> </build> ... </project> 

使用的默认context.xml文件位于src/main/webapp/META-INF/context.xml

设置不同的端口。

我认为最好和最简单的是(如果你的testing正确地绑定到集成阶段):

 <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <executions> <execution> <id>reserve-network-port</id> <goals> <goal>reserve-network-port</goal> </goals> <phase>pre-integration-test</phase> <configuration> <portNames> <portName>maven.tomcat.port</portName> </portNames> </configuration> </execution> </executions> </plugin> 

使用Maven开始时,最好也是最简单的方法来更改Tomcat(而不是8080)

只需编辑你的application.properties(如果你没有application.properties文件,然后在你的maven项目的资源目录中创build一个application.properties文件)文件并设置在下面的行
server.port = 8181 //你可以select你的端口号。

在花了大约3个小时的时间来改变POM.xml中的端口之后,这里是我最新的解决scheme。

 <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <maven.tomcat.port>8081</maven.tomcat.port> </configuration> </plugin> 

只使用port不起作用,因为这不是可以在<configuration>设置的属性。 我们需要了解是什么导致了这个问题。 在我的情况下,错误是端口8080被采取。 我把server.xml的端口改为8081但是maven并没有把它从这里取出来。 我们需要在configuration领域专门说明。 这是<maven.tomcat.port>8081</maven.tomcat.port>进入救援的地方。 注意:你可以把端口8081换成你喜欢的东西。

 <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <server>tomcat-development-server</server> <port>9090</port> </configuration> </plugin>