2009-03-14 7 views

Odpowiedz

2

Jeśli używasz maven plugin tomcat, można specify a context.xml dodając blok konfiguracyjny wtyczki do pom.xml Państwo:

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

domyślny plik context.xml używany położony jest przy src/main/webapp/META-INF/context.xml.

Ustaw tam różne porty.

23

Korzystanie składni podane tomcat-maven-plugin można bezpośrednio określić port:

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

Może to być określone w settings.xml? Ta konfiguracja złamałaby innych używających go, gdyby ich tomcat działał na innym porcie. – Drew

+0

Nowa dokumentacja tutaj: https://tomcat.apache.org/maven-plugin-trunk/run-mojo-features.html – dhh

+0

To nie działa dla mnie – Snickers3192

96

Znam ten wątek jest stary, ale ...

link do dokumentacji, pod warunkiem przez Greg co ciekawe:

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

wyrażenie to co Maven użyj, aby uzyskać wartość w swoim kodzie. Może pochodzić z pliku konfiguracyjnego lub z wiersza poleceń.

Można uruchomić

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

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

+1

gdzie powinniśmy to uruchomić? – bks4line

+0

Hi @ bks4line możesz podać powyższe polecenie w wybierz swój projekt i przejdź do opcji Uruchom jako Uruchom AS -> Uruchom konfigurację -> Cele –

25

miałem podobny problem, gdy miałem kilka małych serwletów uruchamianych fazie ich integracja-test w tym samym czasie, która stała się problemem, jak te zostały skonfigurowane do korzystania z tego samego portu . Ale dzięki bramce build-helper-maven-plugin:reserve-network-port możliwe jest uzyskanie losowych numerów portów, które są dostępne. Następnie mogę utworzyć adres URL zawierający http://localhost:[port]/[servletname], który jest feed into klasą testową Java.

Odzyskiwanie losowy port:

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

Zaczynając tomcat z portem

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

Karmienie URL do testu integracyjnego Java, który jest prowadzony przez Fail wtyczka

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

kod Java

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

myślę najlepszym i najprostszym jest to (jeśli testy są właściwie wiąże się z fazy integracji):

<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

Jesteś coud dodać konfigurację portu na stałe, dodając do niego port atrybutu.

<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

to nie działa – iMysak

+0

Cóż, to działa dla mnie. Jakiej wersji Tomcat używasz? – jiahao

+0

tomcat 7, ten sam tomcat7-maven-plugin – iMysak

9

Poniżej pracował dla mnie:

 <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

Jak to się różni od istniejących odpowiedzi? – Leigh

+0

$ {maven.tomcat.port} -> gdzie powinienem umieścić wartość maven.tomcat.port? – divine

1

Jest najlepszy i łatwy sposób zmienić Tomcat (nie 8080) kiedy wychodząc z Maven

Wystarczy Edycja application.properties (jeśli masz bez pliku application.properties, a następnie utwórz plik application.properties w katalogu zasobów twojego projektu maven) i ustaw poniżej linii server.port = 8181 // Możesz c wybierz swój numer portu.

0

Po spędzeniu około 3 godzin na zmianie portu w POM.xml, oto moje najnowsze rozwiązanie.

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

Korzystanie właśnie port nie działa, ponieważ nie jest to obiekt, który można ustawić w <configuration>. Musimy zrozumieć, co jest przyczyną problemu. W moim przypadku błąd był taki, że został pobrany port 8080. Zmieniłem port w server.xml na 8081, ale maven nie bierze go stąd. Musimy to wyraźnie powiedzieć w polu configuration. Tutaj ratuje się <maven.tomcat.port>8081</maven.tomcat.port>. Uwaga: możesz przeportować port 8081 na coś, co ci się podoba.

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> 
Powiązane problemy