2013-07-17 32 views
8

Tôi đã tạo một Dự án web động mới trong Eclipse Kepler và đây là lần đầu tiên tôi sử dụng IvyDE, tôi đặt một số phụ thuộc để kiểm tra nó. đây là ivy.xml của tôi:Cảnh báo Eclipse và IvyDE: Thông báo của Trình xác nhận phụ thuộc Classpath

<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> 

Các phụ thuộc được giải quyết và tôi có thể thấy chúng trong thư viện dự án.

Nhưng sau này, dự án của tôi bắt đầu đưa ra cảnh báo này:

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 

Vì vậy, nếu tôi hiểu đúng, Eclipse được cảnh báo tôi rằng mục IvyDE trong classpath không tương ứng với một nguồn tài nguyên đó sẽ trong dự án được xây dựng. Tôi cho rằng đây là hành vi mong đợi, nếu vậy, có cách nào để xóa cảnh báo này khỏi dự án mà không vô hiệu hóa mọi Classpath Dependency Validator Message không?

Trả lời

18

Lý do cho thông báo cảnh báo là cơ chế triển khai dự án linh hoạt của Eclipse không biết có triển khai các thư viện được tham chiếu bởi vùng chứa Ivy hay không. Vì vậy, bạn cần phải nói một cách rõ ràng rằng bạn muốn làm gì, triển khai các lọ đến WEB-INF/lib hay không.

Nếu bạn cần chứa này triển khai tới WEB-INF/lib bạn cần phải:

  1. dự án Nhấp chuột phải vào bất động sản
  2. Chọn Triển khai hội
  3. Nhấn Add
  4. Chọn " Các mục nhập đường dẫn xây dựng Java "
  5. Chọn bình chứa Ivy
  6. Nhấp vào Hoàn tất
  7. Hãy chắc chắn rằng con đường triển khai được thiết lập để "WEB-INF/lib"

Deployment Assembly setting

Nếu bạn nhìn vào classpath cài đặt tập tin bạn sẽ thấy điều này thêm một mục nhập như thế này:

<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> 

Lưu ý rằng phần tử <attributes>...</attributes> đã được thêm. Ngoài ra con đường container Ivy của tôi sẽ khác với con đường của bạn vì đây là một con đường container Ivy cho một trong những dự án của riêng tôi.

Bây giờ nếu bạn không cần để triển khai các thư viện này chứa trong container Ivy để thời gian chạy của bạn, sau đó bạn cần phải nói cho Eclipse mà không có sự phụ thuộc vào các thư viện trong thời gian chạy. Bạn có thể làm điều đó bằng cách thêm các thuộc tính thích hợp trong tệp .classpath.

  1. mở tập tin classpath
  2. Tìm các entry cho container Ivy
  3. thủ thêm các yếu tố thuộc tính sau khi một phần tử con của classpathentry

Yếu tố cuối cùng sẽ giống như thế này .con đường của bạn sẽ có các tùy chọn khác nhau nhưng phần quan trọng là yếu tố thuộc tính con:

<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> 

Hoặc một mà bạn chọn, bạn đã nói một cách rõ ràng Eclipse làm thế nào để xử lý phụ thuộc chứa thư viện này trong thời gian triển khai. Vì vậy, bây giờ bạn có thể tái xác nhận dự án (nhấp chuột phải dự án và chọn "Xác nhận") và bạn sẽ thấy lỗi biến mất.

+1

Cần lưu ý rằng công cụ "Quick Fix" của Eclipse có thể thực hiện cả hai quy trình mà bạn mô tả tự động. – Phlibbo

+0

Tôi nên làm gì nếu cảnh báo vẫn còn? Tôi đã kiểm tra đường dẫn triển khai được đặt thành ** WEB-INF/lib ** và .classpath có classpathentry: ' \t \t \t \t \t \t \t \t ' – tonix

Các vấn đề liên quan