ここで興味深い問題があります。Maven - 3.0.4 および jdk 1.6 を使用して、Windows 7 Pro x64 環境で作業しています。
私はmaven用のsettings.xmlに持っています:
<servers>
<server>
<id>LocalTomcatServer</id>
<username>localTomcatAdmin</username>
<password>password</password>
</server>
</servers>
私の tomcat-users.xml ファイルで、次のように定義しました。
<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="admin"/>
<user username="localTomcatAdmin" password="password" roles="manager-gui,manager-script,admin"/>
</tomcat-users>
次のプラグインを含む pom.xml (同じレベルにある) の親である pom-deploy.xml も作成しました。
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.0</version>
<configuration>
<server>LocalTomcatServer</server>
<path>/<path to deploy to></path>
<port>8080</port>
</configuration>
</plugin>
何らかの理由で、 mvn -f pom-deploy.xml tomcat:deploy を実行すると、maven から次の出力が返されます。
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 20.201s
[INFO] Finished at: Wed Dec 12 09:00:21 EST 2012
[INFO] Final Memory: 11M/149M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:tomcat-maven-plugin:1.1:deploy (default-cli) on project <project name>: Cannot invoke Tomcat manager: Server returned HTTP response code: 403 for
URL: http://localhost:8080/manager/deploy?path=%2FTripTixRX&war= -> [Help 1]
他のすべてのライフサイクル目標は機能します。
codehaus プラグインはこのプロジェクト用に構成されていません。org.codehaus.mojo プラグインを試して、http://127.0.0.1:8080/manager/html
出力は、プラグインによって解析されていない URL を示しているようですが、公式の tc7 プラグインに切り替えたので、問題が軽減されたと考えました。
これは、maven が構成されたプラグインを使用していないことをほぼ示しています。まだ運がありません。この時点で、掘り下げ始めたところ、tomcat7-maven-plugin さえダウンロードしていないことがわかりました。ここで、しぶしぶ行った settings.xml への追加に関するいくつかのコメントを読みました。それは私には直感に反するように思えますが、すべての可能性を排除したかったのです。maven、rebuilt、および blamo の settings.xml ファイルに org.tomcat.apache.maven を追加しましたが、動作します。
ですから、この時点でうまくいっているのはうれしいのですが、私は怒っています。マシンごとにmaven settings.xml構成を変更せずに、あるmaven環境から別のmaven環境への移植性を完全に削除していませんか? プロジェクト用にMavenを構成する必要はありませんが、移植性を最大限に高めるために、構成はpomに完全に存在する必要があると考えられています。
また、私の設定なのかわかりませんが、「構成したプラグインが見つかりませんでした!」というメッセージはありませんでした。-X -e し、出力ログに尻をドラッグして、最終的な問題が「可能性がある」ものをリモートで垣間見る必要がありました。
それを機能させることは決して問題ではありません。それは理由です。このように定義する必要があるように思われ、私の観点からは、プロジェクトの移植性はすぐに出てきました。これは私のmaven構成の結果ですか、それとも標準ですか? これに関する他のユーザーの投稿を読んで判断すると、これは maven では普通のことのようです。最終結果は「質問に答えてよかった」だと思いますが、私はどのように、そしてなぜメカニズムに興味があります.
編集:私が実行しているコマンドは次のとおりです: mvn -f pom-deploy.xml -U -Dmaven.test.skip=true clean package tomcat7:deploy -X -e
認証サーバーがないことをまだ示している Maven 出力のスニペットを次に示します。
[DEBUG] Configuring mojo org.apache.tomcat.maven:tomcat7-maven-plugin:2.0:deploy from plugin realm ClassRealm[plugin>org.apache.tomcat.maven:tomcat7-maven-plugin:2.0, parent: sun.misc.Launcher$AppClassLoader@c22b29a]
[DEBUG] Configuring mojo 'org.apache.tomcat.maven:tomcat7-maven-plugin:2.0:deploy' with basic configurator -->
[DEBUG] (f) charset = ISO-8859-1
[DEBUG] (f) contextFile = `E:\workspace\<repo-name>\branches\<project name>-0.1\target\<project name>\META-INF\context.xml`
[DEBUG] (f) ignorePackaging = false
[DEBUG] (f) mode = war
[DEBUG] (f) packaging = war
[DEBUG] (f) path = /<project name>
[DEBUG] (f) update = false
[DEBUG] (f) url = http://localhost:8080/manager/html
[DEBUG] (f) version = 2.0
[DEBUG] (f) warFile = E:\workspace\<repo name>\branches\<Project name>-0.1\target\<project-name>.war
[DEBUG] -- end configuration --
[INFO] Deploying war to http://localhost:8080/<project name>
[DEBUG] No server specified for authentication - using defaults
Uploading: http://localhost:8080/manager/html/deploy?path=%2F<project name>
そしてこれで、それは私に恐ろしいことを返しています:401 - Unauthorized