web-dev-qa-db-ja.com

Mavenで起動するときのTomcatの代替ポート(8080ではない)?

PomまたはコマンドラインでTomcatの代替ポートを指定する簡単な方法はありますか?同じマシンで複数のプロジェクトを実行したいのですが。

72
sammyo

私はこのスレッドが古いことを知っていますが…

Gregが提供するドキュメントへのリンクは興味深いです:

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

式は、コード内で値を取得するためにmavenが使用するものです。構成ファイルまたはコマンドラインから取得できます。

走れる

mvn -Dmaven.Tomcat.port=8181 Tomcat:run-war
104

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

同じポートを使用するように構成されているため、統合テストフェーズを同時に実行するいくつかの小さなサーブレットがあるときに問題になりました。しかし build-helper-maven-plugin:reserve-network-port ゴールのおかげで、利用可能なランダムなポート番号を取得することが可能です。次に、http:// localhost:[port]/[servletname]を含むURLを作成できます。これは feed into = Javaテストクラス。

ランダムポートの取得

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

Java統合テストへのURLのフィード

<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");
}
28
redsolo

以下は私のために働いた:

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

属性ポートを追加することにより、ポート構成を永続的に追加できます。

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

Mavenで起動するときに、Tomcat(8080ではなく)を変更するための最良かつ簡単な方法があります。

Application.propertiesを編集するだけで(application.propertiesファイルがない場合は、mavenプロジェクトのresourcesディレクトリにapplication.propertiesファイルを作成します)、次の行を設定します
server.port = 8181 //ポート番号を選択できます。

3

Maven Tomcatプラグインを使用している場合は、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にあります。

そこで異なるポートを設定します。

2
Pascal Thivent

これが最善かつ最も簡単だと思います(テストが統合フェーズに適切にバインドされている場合):

<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>
1
MariuszS
<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>
1
Pratik Gaurav

POM.xmlでポートを変更する方法に約3時間を費やした後、ここに私の最新のソリューションがあります。

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

<configuration>で設定できるプロパティではないため、portだけを使用しても機能しませんでした。問題の原因を理解する必要があります。私の場合、エラーはポート8080が取得されることでした。 server.xmlのポートを8081に変更しましたが、Mavenはそこからポートを取得しません。 configurationフィールドで具体的に伝える必要があります。これが<maven.Tomcat.port>8081</maven.Tomcat.port>が助けになる場所です。注:ポート8081を好きなものに変更できます。

0
chandresh

私はそれが非常に古い質問であり、まだ答えがないことを知っています。

そして、外側のTomcatを使用する古いプロジェクトをTomcat7-maven-pluginを使用する組み込みTomcatに変換する必要がある場合、同様の質問があります。

そして、私が必要なのは、実行可能なjarをビルドすることです。しかし、既存の答えは私にはうまくいきません... Java -jar project-name.jarの後にmvn packageを実行しても何も起こりません。ポート8080で常に実行されていますが、これは私が望んでいないものです...それから、ドキュメントを検索します Executable War

Java -jar my_project.jar -httpPort 9091

これはドキュメント内:

使用法:Java -jar [exec war jarへのパス] ...

-httpPort使用するhttpポート

-httpsPort使用するhttpsポート...

役に立つことを願っています。

0
Se ven