2009-03-14 20 views

Trả lời

2

Nếu bạn đang sử dụng các plugin tomcat maven, bạn có thể specify a context.xml bằng cách thêm một khối cấu hình plugin để pom.xml: tập tin 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> 

Giá trị mặc định sử dụng tọa lạc tại src/main/webapp/META-INF/context.xml.

Đặt các cổng khác nhau tại đó.

23

Sử dụng cú pháp nhất định trên tomcat-maven-plugin, bạn có thể trực tiếp chỉ định cổng:

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

Điều này có thể được chỉ định trong tệp settings.xml không? Cấu hình này sẽ phá vỡ những người khác sử dụng nó nếu tomcat của họ chạy trên một cổng khác. – Drew

+0

Tài liệu mới tại đây: https://tomcat.apache.org/maven-plugin-trunk/run-mojo-features.html – dhh

+0

Điều này không có tác dụng đối với tôi – Snickers3192

96

Tôi biết chủ đề này là cũ nhưng ...

Các liên kết đến các tài liệu hướng dẫn, được cung cấp bởi Greg thú vị:

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

Biểu thức là những gì maven sử dụng để lấy giá trị trong mã của nó. Nó có thể đến từ một tập tin cấu hình, hoặc từ dòng lệnh.

Bạn có thể chạy

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

Tuyệt đối! 'mvn -Dmaven.tomcat.port = 8181 tomcat: run' – lrkwz

+1

chúng ta nên chạy cái này ở đâu? – bks4line

+0

Hi @ bks4line bạn có thể cung cấp cho lệnh trên trong chọn dự án của bạn và đi đến tùy chọn Run As Chạy AS -> Chạy cấu hình -> Mục tiêu –

25

Tôi đã có một vấn đề tương tự khi tôi đã có một vài servlets nhỏ mà chạy giai đoạn hội nhập-kiểm tra của họ cùng một lúc, mà đã trở thành một vấn đề như những người đã được cấu hình để sử dụng cùng một cổng . Nhưng nhờ mục tiêu build-helper-maven-plugin:reserve-network-port, có thể nhận được số cổng ngẫu nhiên khả dụng. Sau đó, tôi có thể tạo URL chứa http://localhost:[port]/[servletname], là feed into lớp thử nghiệm Java.

Lấy ngẫu nhiên cổng:

<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> 

Bắt đầu tomcat với cổng

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

ăn URL để kiểm tra tích hợp Java mà được điều hành bởi các failsafe plugin

<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> 

mã Java

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

Tôi nghĩ tốt nhất và đơn giản nhất là này (nếu thử nghiệm của bạn đang đúng cách liên kết với giai đoạn hội nhập):

<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> 
4

Bạn coud thêm cấu hình cổng vĩnh viễn bằng cách thêm cổng thuộc tính vào nó.

<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> 
+1

điều này không hoạt động – iMysak

+0

Vâng, nó hoạt động cho tôi. Bạn đang sử dụng phiên bản Tomcat nào? – jiahao

+0

tomcat 7, cùng tomcat7-maven-plugin – iMysak

9

Dưới đây từng làm việc cho tôi:

 <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> 
+0

Điều này khác với câu trả lời hiện tại như thế nào? – Leigh

+0

$ {maven.tomcat.port} -> nơi tôi nên đặt giá trị của maven.tomcat.port? – divine

1

Có là tốt nhất và cách dễ dàng để thay đổi Tomcat (không 8080) khi bắt đầu với Maven

Chỉ Chỉnh sửa application.properties của bạn (nếu bạn có không có tệp application.properties, sau đó tạo tệp application.properties trong thư mục tài nguyên của tệp maven project của bạn) và đặt bên dưới dòng
server.port = 8181 // Bạn có thể c hoose số cổng của bạn.

0

Sau khi dành khoảng 3 giờ để thay đổi cổng trong POM.xml, đây là giải pháp mới nhất của tôi.

<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> 

Sử dụng chỉ port đã không làm việc vì đó không phải là một tài sản mà bạn có thể thiết lập trong <configuration>. Chúng ta cần phải hiểu những gì đang gây ra vấn đề. Trong trường hợp của tôi, lỗi là cổng 8080 được lấy. Tôi đã thay đổi cổng trong server.xml thành 8081 nhưng maven không lấy nó từ đó. Chúng tôi cần phải nói cụ thể trong trường configuration. Đây là nơi mà <maven.tomcat.port>8081</maven.tomcat.port> được giải cứu. Lưu ý: Bạn có thể chnage cổng 8081 để một cái gì đó khác mà bạn thích.

0
<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> 
Các vấn đề liên quan