Eclipse和IvyDE警告:Classpath依赖性验证器消息

时间:2013-07-17 01:42:44

标签: java eclipse ivyde

我在Eclipse Kepler中创建了一个新的Dynamic Web Project,因为这是我第一次使用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

1 个答案:

答案 0 :(得分:18)

警告消息的原因是Eclipse灵活项目部署机制不知道是否部署Ivy容器引用的库。因此,您需要明确告诉它您要执行的操作,将jar部署到WEB-INF / lib。

如果你需要这个容器部署到WEB-INF / lib,你需要:

  1. 右键单击项目转到属性
  2. 选择部署程序集
  3. 点击添加
  4. 选择&#34; Java构建路径条目&#34;
  5. 选择常春藤容器
  6. 点击完成
  7. 确保将部署路径设置为&#34; WEB-INF / lib&#34;
  8. Deployment Assembly setting

    如果查看.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>元素。此外,我的常春藤容器路径将与您的不同,因为这是我自己的项目之一的常春藤容器路径。

    现在,如果您不需要将Ivy容器中包含的这些库部署到运行时,那么您需要告诉Eclipse在运行时不依赖于这些库。您可以通过在.classpath文件中添加适当的属性来实现。

    1. 打开.classpath文件
    2. 找到常春藤容器的条目
    3. 手动将以下属性元素添加为classpathentry
    4. 的子元素

      最终元素看起来像这样。您的路径将有不同的选项,但关键部分是属性子元素:

      <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如何在部署期间处理此库容器依赖项。所以现在你可以重新验证项目(右键单击项目并选择&#34;验证&#34;)你应该会看到错误消失。