8

Eclipse Kepler で新しい動的 Web プロジェクトを作成しました。IvyDE を使用するのは初めてなので、いくつかの依存関係をテストしてみました。ここに私のivy.xmlがあります:

<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
    <info
        organisation="net.myorg"
        module="mymodule"
        status="integration">
    </info>
    <dependencies>
       <dependency org="org.hibernate" name="hibernate-entitymanager" rev="4.2.3.Final"></dependency>
       <dependency name="log4j" rev="1.2.17" org="log4j"></dependency>
    </dependencies>
</ivy-module>

依存関係が解決され、プロジェクト ライブラリで確認できます。

しかし、この後、私のプロジェクトはこの警告を出し始めました:

Description Resource    Path    Location    Type
Classpath entry org.apache.ivyde.eclipse.cpcontainer.IVYDE_CONTAINER/?project=myproject&ivyXmlPath=ivy.xml&confs=*&acceptedTypes=jar%2Cbundle%2Cejb%2Cmaven-plugin&alphaOrder=false&resolveInWorkspace=true&retrievedClasspath=true&retrievedClasspathPattern=lib%2F%5Btype%5Ds%2F%5Bartifact%5D-%5Brevision%5D.%5Bext%5D&retrievedClasspathSync=true&retrievedClasspathTypes=* will not be exported or published. Runtime ClassNotFoundExceptions may result.      myproject       P/myproject Classpath Dependency Validator Message

したがって、私が正しく理解している場合、Eclipse は、クラスパスの IvyDE エントリが、ビルドされたプロジェクトに含まれるリソースに対応していないことを警告しています。これは予想される動作だと思います。もしそうなら、すべてを無効にすることなく、この警告をプロジェクトから削除する方法はありClasspath Dependency Validator Messageますか?

4

1 に答える 1

19

警告メッセージが表示される理由は、Eclipse フレキシブル プロジェクトのデプロイ メカニズムが、Ivy コンテナによって参照されるライブラリをデプロイするかどうかを認識していないためです。そのため、jar ファイルを WEB-INF/lib にデプロイするかどうかを明示的に指定する必要があります。

このコンテナーを WEB-INF/lib にデプロイする必要がある場合は、次のことを行う必要があります。

  1. プロジェクトを右クリックしてプロパティに移動します
  2. 展開アセンブリを選択
  3. [追加] をクリックします
  4. 「Java ビルド パス エントリ」を選択します。
  5. Ivy コンテナを選択
  6. [完了] をクリックします
  7. 展開パスが「WEB-INF/lib」に設定されていることを確認してください

展開アセンブリの設定

.classpath 設定ファイルを調べると、次のようなエントリが追加されていることがわかります。

<classpathentry kind="con" path="org.apache.ivyde.eclipse.cpcontainer.IVYDE_CONTAINER/?project=ivy-test-portlet&amp;ivyXmlPath=ivy.xml&amp;confs=*&amp;ivySettingsPath=%24%7Bliferay_sdk_dir%3Aivy-test-portlet%7D%2Fivy-settings.xml&amp;loadSettingsOnDemand=false&amp;ivyUserDir=%24%7Bliferay_sdk_dir%3Aivy-test-portlet%7D%2F.ivy&amp;propertyFiles=">
    <attributes>
        <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
    </attributes>
</classpathentry>

<attributes>...</attributes>要素が追加されたことに注意してください。また、これは私自身のプロジェクトの 1 つの Ivy コンテナー パスであるため、私の Ivy コンテナー パスはあなたのものとは異なります。

Ivy コンテナーに含まれるこれらのライブラリーをランタイムにデプロイする必要がない場合は、実行時にこれらのライブラリーに依存しないことを Eclipse に伝える必要があります。これを行うには、.classpath ファイルに適切な属性を追加します。

  1. .classpath ファイルを開く
  2. Ivy コンテナのエントリを見つける
  3. 次の属性要素を classpathentry の子要素として手動で追加します

最終的な要素は次のようになります。パスにはさまざまなオプションがありますが、重要な部分は属性の子要素です。

<classpathentry kind="con" path="org.apache.ivyde.eclipse.cpcontainer.IVYDE_CONTAINER/?project=ivy-test-portlet&amp;ivyXmlPath=ivy.xml&amp;confs=*&amp;ivySettingsPath=%24%7Bliferay_sdk_dir%3Aivy-test-portlet%7D%2Fivy-settings.xml&amp;loadSettingsOnDemand=false&amp;ivyUserDir=%24%7Bliferay_sdk_dir%3Aivy-test-portlet%7D%2F.ivy&amp;propertyFiles=">
    <attributes>
        <attribute name="org.eclipse.jst.component.nondependency" value=""/>
    </attributes>
</classpathentry>

どちらを選択しても、デプロイ中にこのライブラリ コンテナーの依存関係を処理する方法を Eclipse に明示的に伝えたことになります。これで、プロジェクトを再検証できます (プロジェクトを右クリックして [検証] を選択します)。エラーが消えることがわかります。

于 2013-07-23T11:56:35.103 に答える