web-dev-qa-db-ja.com

EclipseWTPがMavenの依存関係を公開しない

EclipseIndigoとTomcatサーバーを使用して基本的なhelloworldプロジェクトをセットアップしようとしています。単純なサーブレットを使用して動的プロジェクトを作成しました。サーブレットをテストしましたが、正常に機能しました。次に、Mavenサポートを有効にして、pomにログバックを追加しました。サーブレットのdoGetメソッドにロギングステートメントを配置しました。サーブレットを実行すると、ログバックjarがEclipse Tomcatインスタンスにコピーされていないため、バインディングが見つからないと文句を言います。私はここのどこかに公開された瓶を見つけることを期待していました:

${workspace}\.metadata\.plugins\org.Eclipse.wst.server.core\tmp0\

EclipseをWTP/Mavenで正しく動作させるにはどうすればよいですか?また、m2e-wtpコネクタを問題なくインストールしてみました。

20
dcompiled

チェックDeployment Assembly(プロジェクトのコンテキストメニュー)、マッピングが必要ですMaven Dependencies-> WEB-INF/lib

51
e-zinc

ASP.NETのバックグラウンドから来ているので、特に自分で学習している場合、EclipseWTPとMavenでWebアプリを実行するのにどれだけの作業が必要かは衝撃的です。このクイックスタートガイドが、他の誰かがすぐに理解できるようになることを願っています。

Mavenを使用してEclipseWTPでhelloworldプロジェクトを機能させるには2つの方法があります。動的Webプロジェクトを作成してから、Mavenの性質を追加することも、その逆を行うこともできます。

更新サイトを備えたEclipseの前提条件

スタートアップ構成

  • Tomcat 7のコピーを http://Tomcat.Apache.org/download-70.cgi からインストールします。

  • ウィンドウ->設定->サーバー->ランタイム環境

  • Apache Tomcat 7.0を追加し、ローカルインストールディレクトリを選択します

オプション1:動的Webプロジェクトを作成してから、Maven Natureを追加します

  • 新しいMavenプロジェクトを作成し、archetypeorg.Apache.maven.archetypes:maven-archetype-webappを選択します

  • Java EEパースペクティブに変更します。

  • 新しいソースフォルダsrc\main\Javaを作成します。 Eclipseがこれを行うのに十分なほどスマートではなく、フォルダーの順序も正しくないことに注意してください。 src\main\Javaフォルダーはsrc\main\resourcesの後にリストされています。これは、後でプロジェクトのプロパティで手動で修正できます。

  • 新しいサーブレットを作成します。順序が間違っているため、Eclipseがこのファイルを間違ったフォルダーsrc\main\resourcesにデフォルト設定する方法に注意してください。代わりに、手動でsrc\main\Javaを選択します。ウィザードの2ページ目のURLマッピングを/ *に変更して、テストを容易にします。

  • これでサーブレットの準備が整いましたが、サーブレットAPIへの依存関係は解消されていません。 A)プロジェクトへの依存関係としてサーブレットAPIを追加できます。または、B)Apache7.0のEclipseサーバー構成にバインドできます。

  • オプションAの場合、次の依存関係をpomに追加します。

_<dependency>
  <groupId>org.Apache.Tomcat</groupId>
  <artifactId>Tomcat-api</artifactId>
  <version>7.0.${set this}</version>
  <scope>provided</scope>
</dependency>
_
  • オプションBの場合:

    • プロジェクトのプロパティ-> Javaビルドパス->ライブラリ->ライブラリの追加->サーバーランタイム-> Apache Tomcat 7.0
    • 右クリックしてサーバーで実行します。
  • http:// localhost:8080 / $ {artifact}のような空白のページが内部ブラウ​​ザに表示されます。

依存関係の公開のテスト

  • Pomにjoda-timeを追加します。

  • 以前にdoGetメソッド用に作成したサーブレットにこの行を追加し、必要な依存関係をインポートします。

_protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.getWriter().println("The time is now: " + new DateTime().toString());
}
_

テストページをリロードすると、出力は次のようになります。

今の時間:2012-03-03T14:14:29.890-05:00

サーブレット3.0と注釈を試してみたい場合、これはデフォルトでは有効になっていません。理由はわかりません。最初に、これをpomに追加してMavenにJava 1.6を使用させます。そうしないと、pomを更新するたびに、構成がJava 1.5に戻ります。

_  <plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
      <source>1.6</source>
      <target>1.6</target>
    </configuration>
  </plugin>
_

[プロジェクトのプロパティ]-> [プロジェクトファセット]を開きます。 「動的Webモジュール」の下のバージョンを3.0に変更し、Javaバージョン1.6

Src\main\Javaにクラス名AnnotatedServletで新しいサーブレットを作成し、@ WebServletアノテーションがどのように自動作成されるかに注目してください。

オプション2:動的Webプロジェクトを作成してから、Maven Natureを追加します

  • Tomcatランタイムとダイナミックモジュールバージョン3.0を選択します
  • ソースフォルダsrc\main\Javaを作成します
  • デフォルトの出力ターゲット\クラスを設定します
  • コンテキストディレクトリsrc\main\webappを設定します
  • Web.xmlの生成を確認してください
  • 迅速なテストのためにマッピング/ *を使用してサーブレットを作成する
  • DoGetメソッドに出力ステートメントを追加します

response.getWriter().println("Another test");

  • 「デプロイメント記述子」をダブルクリックし、この属性をルートWebアプリ要素に追加します_metadata-complete="false"_

  • プロジェクトを右クリックし、「実行」->「サーバーで実行」を選択します

  • プロジェクトを右クリック->設定-> Mavenプロジェクトに変換
  • 戦争としてパッケージを選択する
  • Pomを編集し、コンパイラをJava 1.6を使用するように設定し、joda-time依存関係を追加します。

_<dependencies>
    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>2.1</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
    </plugins>
</build>
_
13
dcompiled

プロジェクトエクスプローラーでWebプロジェクトを右クリックし、[Maven]-> [プロジェクトの更新]を選択します。

1
Igal Dvir

同様の問題に直面し、Deployment Assemblyを正しく構成したにもかかわらず、それでも機能しませんでした。次に、[ウィンドウ]-> [設定]-> [Eclipse]-> Javaエンタープライズプロジェクト-> [Webプロジェクト]]の[展開]タブで、依存プロジェクトの管理がオフになっていることがわかりました。依存プロジェクトのjarをlibフォルダーにデプロイすると、すべてが魅力のように機能し、DeploymentAssemblyオプションをオフにすることもできます。

0
vanval