2009-03-14 1 views
68

pom 또는 명령 줄에서 Tomcat에 대한 대체 포트를 지정하는 쉬운 방법이 있습니까? 같은 시스템에서 여러 프로젝트를 실행하고 싶습니다.Maven으로 시작할 때 Tomcat 용 대체 포트 (8080 아님)?

+3

MVN -Dmaven.tomcat .port = <1024-49151> 톰캣 : 실행 예 MVN -Dmaven.tomcat7.port tomcat7 = 8585 : OR 의 pom.xml 하여 실행 ... <구성> 8585 Rafiq

답변

2

당신이 받는다는 바람둥이 플러그인을 사용하는 경우 pom.xml 파일에 플러그인 구성 블록을 추가하여 specify a context.xml 할 수 있습니다 src/main/webapp/META-INF/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 파일을.

다른 포트를 설정하십시오. tomcat-maven-plugin에 주어진 구문을 사용

23

, 직접 포트를 지정할 수 있습니다

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

이이 Settings.XML의 내에서 지정 될 수 ? 이 구성은 바람둥이가 다른 포트에서 실행되는 경우 다른 구성 요소를 사용하지 못하게합니다. – Drew

+0

여기에 새 문서가 있습니다. https://tomcat.apache.org/maven-plugin-trunk/run-mojo-features.html – dhh

+0

이것은 나를 위해 작동하지 않습니다 – Snickers3192

96

을 나는 ...

문서에 대한 링크, 그렉에서 제공을이 스레드가 오래 알고 있지만 흥미 롭습니다 :

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

표현식은 다음과 같습니다. 해당 코드에서 값을 가져 오는 데 사용하십시오. 구성 파일이나 명령 행에서 올 수 있습니다.

당신은

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

물론입니다! 'mvn -Dmaven.tomcat.port = 8181 tomcat : run' – lrkwz

+1

어디서 실행해야합니까? – bks4line

+0

안녕하세요 bks4line 안녕하세요 bks4line 프로젝트를 선택하고 실행 옵션으로 이동 실행 AS -> 실행 구성 -> 목표 –

25

를 실행할 수 나는 것과 같은 문제가 동일한 포트를 사용하도록 구성된이 된 동시에 자신의 통합 테스트 단계를 실행 여러 개의 작은 서블릿을했을 때 비슷한 문제가 있었다 . 그러나 build-helper-maven-plugin:reserve-network-port 목표 덕분에 사용할 수있는 임의의 포트 번호를 얻을 수 있습니다. 그런 다음 http://localhost:[port]/[servletname]을 포함하는 URL을 만들 수 있습니다.이 URL은 feed into Java 테스트 클래스입니다. 이중 안전에 의해 실행되는 자바 통합 테스트에 URL을 먹이 포트

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

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

시작 바람둥이 :

임의의 포트 검색 플러그인

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

자바 코드는

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

내가 가장 생각하고 단순한 (테스트가 제대로 통합 단계에 결합하는 경우)이 있습니다 :

<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

당신은 포트 구성을 추가 coud 속성 포트를 추가하여 영구적으로

<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

이 작동하지 않습니다 – iMysak

+0

글쎄, 그것은 나를 위해 작동합니다. Tomcat의 어떤 버전을 사용하고 있습니까? – jiahao

+0

tomcat 7, 동일한 tomcat7-maven-plugin – iMysak

9

다음은 나를 위해 일한 : 당신이있는 경우에 (그냥 application.properties을 편집 메이븐

로 시작하는 경우

 <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

기존 답변과 다른 점은 무엇입니까? – Leigh

+0

$ {maven.tomcat.port} -> maven.tomcat.port의 값은 어디에 두어야하나요? – divine

1

가장하고 (안 8080) Tomcat을 변경하는 쉬운 방법이있다 application.properties 파일이 없다면, 당신의 maven 프로젝트의 resources 디렉토리에 application.properties 파일을 생성하십시오.) 파일과 아래 라인을 설정하십시오.
server.port = 8181 // 당신은 할 수 있습니다. 당신의 항구 번호를 고수하십시오.

0

POM.xml에서 포트를 변경하는 방법에 대해 대략 3 시간을 보낸 후, 여기 내 최신 솔루션이 있습니다. 그건 당신이 <configuration>에서 설정할 수있는 속성이 아니기 때문에 단지 port를 사용

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

작동되지 않았습니다. 우리는 문제의 원인을 이해해야합니다. 제 경우에는 오류가있는 포트 8080입니다. server.xml의 포트를 8081으로 변경했지만, maven이 거기에서 가져 가지 않습니다. 우리는 특별히 configuration 필드에 그것을 말할 필요가 있습니다. 이것은 <maven.tomcat.port>8081</maven.tomcat.port>이 구출 된 곳입니다. 참고 : 포트 8081을 원하는 다른 것으로 연결할 수 있습니다.

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>