PomまたはコマンドラインでTomcatの代替ポートを指定する簡単な方法はありますか?同じマシンで複数のプロジェクトを実行したいのですが。
私はこのスレッドが古いことを知っていますが…
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
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>
同じポートを使用するように構成されているため、統合テストフェーズを同時に実行するいくつかの小さなサーブレットがあるときに問題になりました。しかし 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");
}
以下は私のために働いた:
<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>
Mavenで起動するときに、Tomcat(8080ではなく)を変更するための最良かつ簡単な方法があります。
Application.propertiesを編集するだけで(application.propertiesファイルがない場合は、mavenプロジェクトのresourcesディレクトリにapplication.propertiesファイルを作成します)、次の行を設定します
server.port = 8181 //ポート番号を選択できます。
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
にあります。
そこで異なるポートを設定します。
これが最善かつ最も簡単だと思います(テストが統合フェーズに適切にバインドされている場合):
<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>
<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>
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を好きなものに変更できます。
私はそれが非常に古い質問であり、まだ答えがないことを知っています。
そして、外側の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ポート...
役に立つことを願っています。