pre-integration-test フェーズで組み込み tomcat にアプリをデプロイしたいと考えています。
ただし、非常に特殊な要件があります。Mavenized ではない Web アプリケーションに依存しています。それを開発するための努力は私が余裕があるよりも大きいので、良い解決策は私の依存関係のために戦争を展開し、それから私のアプリケーション戦争を展開することだと思いました.
私のプラグイン構成は次のようになります。
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<path>/spr</path>
<url>http://localhost:8080/manager/text</url>
<server>localServer</server>
<additionalConfigFilesDir>${additionalFilePath}</additionalConfigFilesDir>
<tomcatUsers>${somePath}/tomcat-users.xml</tomcatUsers>
<fork>true</fork>
</configuration>
<executions>
<execution>
<id>start-portal</id>
<phase>pre-integration-test</phase>
<goals>
<goal>run-war</goal>
</goals>
<configuration>
<path>/</path>
<warDirectory>${my.dependency.war.path}</warDirectory>
</configuration>
</execution>
<execution>
<id>deploy-spr</id>
<phase>pre-integration-test</phase>
<goals>
<goal>deploy</goal>
</goals>
<configuration>
<path>/spr</path>
</configuration>
</execution>
<execution>
<id>stop-tomcat</id>
<phase>post-integration-test</phase>
<goals>
<goal>shutdown</goal>
</goals>
</execution>
</executions>
</plugin>
私の実行によってサーバーが正常に起動しstart-portal
、依存関係が正しくデプロイされます。
問題は実行にありdeploy-spr
ます。エラーが発生し続けます:
[ERROR] Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:deploy-only (deploy-spr) on project spr: Tomcat return http status error: 403, Reason Phrase: Forbidden: <html><head><title>Apache Tomcat/7.0.47 - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 403 - </h1><HR size="1" noshade="noshade"><p><b>type</b> Status report</p><p><b>message</b> <u></u></p><p><b>description</b> <u>Access to the specified resource has been forbidden.</u></p><HR size="1" noshade="noshade"><h3>Apache Tomcat/7.0.47</h3></body></html> -> [Help 1]
完全を期すために、私の settings.xml には次のものがあります。
<server>
<id>localServer</id>
<username>tomcatScript</username>
<password>password</password>
</server>
そして、私の pom ファイルによって参照される tomcat-users.xml には次のものがあります。
<tomcat-users>
<!-- Role to manage WAR files via HTML /manager. The name should be as is! -->
<role rolename="manager-gui"/>
<!-- Role to manage WAR files via script like Maven. The name should be as is! -->
<role rolename="manager-script"/>
<!-- One user cannot have manager-gui and manager-script roles -->
<user username="tomcat" password="password" roles="manager-gui"/>
<user username="tomcatScript" password="password" roles="manager-script"/>
</tomcat-users>
here で説明されているような、いくつかの同様のエラーが見つかりました。ただし、これらの投稿はすべてサーバーが既に実行されていると見なしているため、まったく同じではありません。
すでに実行中の tomcat にアプリケーションをデプロイするテストを行ったところ、動作しました。問題は、実際には maven が組み込みの tomcat を起動し、その組み込みの tomcat にデプロイすることです。
現時点では、次のような問題が考えられます。
- pom.xml に指定されている tomcat-users.xml がなぜか正しく読み込まれていません。
- maven は、統合前テスト段階で 2 つの実行をうまく処理していません (ただし、パッケージ段階でサーバーを強制的に起動しましたが、まだ機能しません)。
ちなみに、同じフェーズで 2 つの異なる実行でそれを行っている理由は、ほとんどの場合、start-portal
2 つの Web アプリケーションを一度にデプロイするように構成できなかったためです (1 つは Maven アーティファクトから、もう 1 つは外部戦争から)。誰かがこれを行う方法を知っていれば、それは私にとっても許容できる修正です(ただし、この質問のタイトルとは実際には関係ありません)。webapps 構成プロパティは、外部戦争では機能しないようです。Maven アーティファクトだけです。
私は完全にアイデアがありません。誰かがこの問題に遭遇したことがありますか、またはこれを達成する方法を知っていますか?
ありがとう