2009-03-14 7 views

cevap

2

Eğer maven Tomcat eklenti kullanarak yapıyorsanız, pom.xml bir eklenti yapılandırma bloğu ekleyerek specify a context.xml yapabilirsiniz: src/main/webapp/META-INF/context.xml bulunmaktadır kullanılan

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

varsayılan context.xml dosyasını.

Buraya farklı bağlantı noktaları ayarlayın. tomcat-maven-plugin verilen sözdizimi kullanarak

23

doğrudan bağlantı noktasını belirtebilirsiniz:

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

bu settings.xml içinde belirtilen edilebilir ? Bu yapılandırma, eğer tomcat'ları farklı bir bağlantı noktasında koşarsa, başkalarının bunu kullanmasını engellerdi. – Drew

+0

Yeni belge burada: https://tomcat.apache.org/maven-plugin-trunk/run-mojo-features.html – dhh

+0

Bu benim için çalışmıyor – Snickers3192

96

ben ...

belgelere bağlantı Greg tarafından sağlanan Konuyu eski olduğunu biliyorum ama ilginç:

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

İfade ne maven kodundaki değeri almak için kullanın. Bir yapılandırma dosyasından veya komut satırından gelebilir.

Sen

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

Kesinlikle! mvn -Dmaven.tomcat.port = 8181 tomcat: run' – lrkwz

+1

Bunu nerede çalıştırmalıyız? – bks4line

+0

Merhaba @ bks4line 'da yukarıdaki komutu verebilirsiniz ve aşağıdaki gibi Çalıştır seçeneğine gidin AS Çalıştır -> Çalıştır Yapılandırması -> Hedefler –

25

çalıştırabilir ben gibi bir sorun aynı bağlantı noktasını kullanmak üzere yapılandırılmış edildi oldu aynı zamanda onların entegrasyon test aşamasında, koşmak birkaç küçük servlet varken benzer bir sorun vardı . Ama build-helper-maven-plugin:reserve-network-port hedefine, mevcut olan rasgele port numaralarını almak mümkündür. Daha sonra, feed into Java test sınıfı olan http://localhost:[port]/[servletname]'u içeren bir URL oluşturabilirim. hata korumalı tarafından çalıştırılan Java entegrasyon testine URL'yi Besleme portu

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

ile

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

Başlangıç ​​tomcat:

rastgele port alınıyor eklenti

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

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

Ben en iyi düşünmek ve en basit (test düzgün entegrasyon aşamasına bağlamak varsa) şudur:

<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

Bağlantı noktası yapılandırması eklemek coud özniteliği bağlantı noktasına ekleyerek kalıcı olarak.

<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

Bu işe yaramıyor – iMysak

+0

Eh, benim için çalışıyor. Tomcat'in hangi sürümünü kullanıyorsunuz? – jiahao

+0

tomcat 7, aynı tomcat7-maven-plugin – iMysak

9

Aşağıda benim için çalıştı: Eğer varsa (Sadece application.properties düzenleyin Maven

ile başlatırken

 <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

Bu, mevcut cevaplardan farklı mıdır? – Leigh

+0

$ {maven.tomcat.port} -> maven.tomcat.port değerini nereye yerleştirmeliyim? – divine

1

en iyi ve (değil 8080) Tomcat değiştirmek için kolay bir yol yoktur no application.properties dosyası, daha sonra maven projenizin kaynak dizinindeki bir application.properties dosyası oluşturun) ve aşağıdaki satırın altından ayarlayın
server.port = 8181 // You can c liman numaranızı delin.

0

POM.xml'deki bağlantı noktasını değiştirme konusunda yaklaşık 3 saat geçirdikten sonra, İşte en son çözümüm. o Eğer <configuration> ayarlayabileceğiniz bir özellik olmadığı için sadece port kullanma

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

çalışma değildi. Soruna neyin neden olduğunu anlamamız gerek. Benim durumumda hata, 8080 portunun alındığıydu. Bağlantıyı server.xml içinde 8081 olarak değiştirdim ancak maven onu oradan almıyor. Özellikle configuration alanında belirtmemiz gerekiyor. Bu, <maven.tomcat.port>8081</maven.tomcat.port>'un kurtarıldığı yerdir. Not: 8081 portunu beğendiğiniz başka bir şeye yükleyebilirsiniz.

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>