2012-08-28 10 views
6

Właśnie zaczynam od Tycho i jestem zaskoczony na wczesnym etapie. Być może coś nie rozumiem, więc na wszelki wypadek, oto, czego się spodziewam: definiuję potrzeby mojego pakietu w stylu OSGi (tj. W MANIFEST.MF przez Import-Package), a Tycho w jakiś sposób wykorzystuje te informacje w locie zamiast mnie, potrzebuję przedefiniować to wszystko w stylu Mavena (tzn. nie muszę umieszczać zależności w pom.xml).Tycho - "Niezaspokojone ograniczenie" na pakiecie importu

Tak, zrobiłem prosty projekt Maven, Eclipse z wtyczką m2eclipse, m2eclipse-Tycho dodać na i wtyczki PDE i umieścić następującą Tycho rzeczy w pom:

<properties> 
    <tycho-version>0.15.0</tycho-version> 
</properties> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.eclipse.tycho</groupId> 
      <artifactId>tycho-maven-plugin</artifactId> 
      <version>${tycho-version}</version> 
      <extensions>true</extensions> 
     </plugin> 
    </plugins> 
</build> 

walczyli przez kilka zwariowane błędy konfiguracji, a wreszcie dostał w zasadzie pusty projekt (tj. bez kodu źródłowego), który nie dał żadnych błędów ani ostrzeżeń w Eclipse. Następnie skopiowałem mój kod źródłowy z innego projektu i (zgodnie z oczekiwaniami) dostałem garść błędów kompilatora z powodu braku zależności. Pierwszym z nich był AbstractChannel z org.jboss.netty.channel. Używam wersji 3.5.1.Final od Netty, więc edytowane mój MANIFEST.MF obejmuje:

Import-Package: org.jboss.netty.channel;version="[3.5.1,4)" 

I wtedy spodziewa Tycho jakoś magicznie dowiedzieć się, że muszę Netty i dlatego działają jak gdybym miał wstawiony coś jak następuje w moim Maven pom.xml:

<dependency> 
    <groupId>org.jboss.netty</groupId> 
    <artifactId>netty</artifactId> 
    <version>3.5.1.Final</version> 
</dependency> 

Zamiast tego wszystkiego, co się stało, mam jeden dodatkowy błąd w Eclipse, mówiąc:

Unsatisfied constraint: 'Import-Package: org.jboss.netty.channel;version="[3.5.1,4.0.0)" 

nie wiem gdzie się udać od niego re. Czy mam jakieś podstawowe niezrozumienie tego, co powinien zrobić Tycho? Czy jest jeszcze coś, co muszę skonfigurować, aby móc wykonać "magiczne" tłumaczenie z wpisu Import-Package w pozycji pom.xml ? Albo coś innego?

Z góry dziękuję.

Odpowiedz

3

Tak, jest jeszcze kilka przeszkód do pokonania.

W skrócie, będziesz musiał dostarczyć Tycho z repozytorium, z którego będzie mógł pobrać zależności.

w nieco bardziej szczegółowo:

  • trzeba skonfigurować platformę docelową, i przekazać ją do Tycho. Domyślam się, że już skonfigurowałeś platformę docelową w jakiś sposób, w przeciwnym razie Eclipse również narzekałby na brak znalezienia Netty.
  • Upewnij się, że udostępniasz platformę docelową w obszarze roboczym, aby Tycho mógł uzyskać do niej dostęp.
  • Powiedz Tycho wykorzystać tę platformę docelową jak this
  • Tycho platformach docelowych kompatybilny tylko układy wsparcie P2, więc nie zwykły katalogów. Nie jestem pewien, jaki jest najlepszy sposób na wykonanie takiego repozytorium p2, ponieważ poprosiłem o numer while back. Nie ma żadnej odpowiedzi, ale wyjaśniam, jak to działa (dla mnie).

Nadzieję, że to pomaga, Frank

+0

Dzięki! Brakowało mi platformy docelowej. – user1628103

3

Zrozumienie jest całkiem dobra już, ale jest małe, ale istotne kawałek brakuje: W przeciwieństwie do Maven, istnieje nie kanoniczny domyślnym repozytorium (jak „centralne”) w Tycho. Musisz skonfigurować miejsce, w którym Tycho będzie szukał rozwiązania zależności OSGi.

Ten zakres wyszukiwania nazywa się "target platform" w Tycho. Istnieje different ways so include artifacts in the target platform; najłatwiejszym jest skonfigurowanie repozytorium p2 zawierającego zależności w POM z dodatkowym atrybutem <layout>p2</layout> (zakładając, że znasz repozytorium p2 zawierające zależności).

0

Istnieje również możliwość dodania brakującego pakietu przez dodatkową zależność konfiguracja bezpośrednio do wadliwego pakietu:

<plugin> 
<groupId>org.eclipse.tycho</groupId> 
<artifactId>target-platform-configuration</artifactId> 
<version>${tycho.version}</version> 
<configuration> 
    <dependency-resolution> 
    <extraRequirements> 
    <requirement> 
    <type>eclipse-plugin</type> 
    <id>org.eclipse.jface.text</id> 
    <versionRange>0.0.0</versionRange> 
    </requirement> 
    </extraRequirements> 
</dependency-resolution> 
</configuration> 
</plugin>