2013-07-17 16 views
8

Stworzyłem nowy dynamiczny projekt internetowy w Eclipse Kepler, a ponieważ używam IvyDE po raz pierwszy, dodałem kilka zależności, aby go przetestować. tutaj jest mój bluszcz.xml:Ostrzeżenie Eclipse i IvyDE: Komunikat Validator zależności 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> 

Zależności, gdzie rozwiązane i widzę je w bibliotekach projektu.

Ale po tym, mój projekt zaczął dawać to ostrzeżenie:

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 

Więc jeśli ja to dobrze zrozumieć, Eclipse ostrzega mnie, że wejście IvyDE w ścieżce klasy nie odpowiadają zasobu, który będzie być w zbudowanym projekcie. Przypuszczam, że jest to oczekiwane zachowanie, jeśli tak, czy istnieje sposób usunięcia tego ostrzeżenia z projektu, bez wyłączania każdego Classpath Dependency Validator Message?

Odpowiedz

18

Powód ostrzeżenia jest taki, że mechanizm wdrażania projektu elastycznego Eclipse nie wie, czy wdrożyć biblioteki, do których odwołuje się kontener Ivy. Musisz więc jawnie powiedzieć, co chcesz zrobić, rozmieścić słoiki w WEB-INF/lib lub nie.

Jeśli potrzebie tego kontenera wdrożony do WEB-INF/lib musisz:

  1. Prawo projekt kliknięciem przejść do właściwości Zgromadzenie
  2. Wybierz Wdrożenie
  3. Kliknij Dodaj
  4. Wybierz " Pozycje ścieżki budowania Java "
  5. Wybierz kontener Ivy
  6. Kliknij Zakończ
  7. Upewnij się, że ścieżka Deploy jest ustawiony na "WEB-INF/lib"

Deployment Assembly setting

Jeśli spojrzeć na .classpath ustawienia pliku widać to dodaje wpis tak:

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

Uwaga: element <attributes>...</attributes> został dodany. Również moja ścieżka kontenerowa Ivy będzie inna niż Twoja, ponieważ jest to ścieżka kontenerowa Ivy do jednego z moich własnych projektów.

Teraz, jeśli nie potrzebuje, aby wdrożyć te biblioteki zawarte w kontenerze Ivy do środowiska wykonawczego, musisz poinformować Eclipse, że nie ma zależności od tych bibliotek w środowisku wykonawczym. Możesz to zrobić, dodając odpowiednie atrybuty w pliku .classpath.

  1. Otwórz plik .classpath
  2. Znajdź wpis do pojemnika Ivy
  3. ręcznie dodać następujące atrybuty elementu jako element potomny o classpathentry

Ostatnim elementem będzie wyglądać mniej więcej tak .Twoja ścieżka będzie miał różne opcje, ale kluczowym elementem jest element atrybuty dziecko:

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

Albo jeden, który wybierzesz, masz wyraźnie powiedział Eclipse jak obsługiwać tę zależność kontenera biblioteki podczas wdrożenia. Teraz możesz ponownie sprawdzić poprawność projektu (kliknij projekt prawym przyciskiem myszy i wybierz "Sprawdź poprawność"), a błąd powinien zniknąć.

+1

Warto zauważyć, że narzędzie "Szybka korekta" Eclipse może wykonywać obie procedury, które opisujesz automatycznie. – Phlibbo

+0

Co powinienem zrobić, jeśli ostrzeżenie pozostanie? Sprawdziłem, że ścieżka wdrażania jest ustawiona na ** WEB-INF/lib ** i .classpath ma klasę classpathentry: ' \t \t \t \t \t \t \t \t ' – tonix

Powiązane problemy