2012-08-28 14 views
6

Sono appena all'inizio di Tycho e sono bloccato in una fase iniziale. Forse sto fraintendendo qualcosa, quindi per ogni evenienza, ecco cosa mi aspetto: definisco le esigenze del mio bundle in stile OSGi (ovvero in MANIFEST.MF tramite Import-Package), e Tycho in qualche modo usa queste informazioni al volo invece di dover ridefinire tutto in stile Maven (cioè non devo mettere dipendenze in pom.xml).Tycho - "Vincolo insoddisfatto" su un pacchetto di importazione

Così, ho fatto un semplice progetto Maven, in Eclipse con il plugin m2eclipse, m2eclipse-Tycho add on e plug-PDE, e mettere il seguente roba Tycho nel 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> 

ha lottato con un po ' errori di configurazione stravaganti, e finalmente ottenuto un progetto essenzialmente vuoto (cioè nessun codice sorgente) che non dava errori o avvisi in Eclipse. Poi ho copiato il mio codice sorgente da un altro progetto e, come previsto, ho ricevuto un sacco di errori del compilatore a causa della mancanza di dipendenze. Il primo era AbstractChannel da org.jboss.netty.channel. Io uso la versione 3.5.1.Final di Netty, così ho modificato il mio MANIFEST.MF per includere:

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

Mi è stato poi aspettavo Tycho di capire in qualche modo magicamente che ho bisogno di Netty, e quindi agire come se avessi qualcosa inserita come il seguente nel mio Maven pom.xml:

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

Invece, tutto quello che è successo è stato un errore ho ottenuto in più in Eclipse, dicendo:

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

non so dove andare da lui ri. Ho qualche incomprensione fondamentale su cosa dovrebbe fare Tycho? O c'è qualcos'altro che devo impostare affinché sia ​​in grado di eseguire la traduzione "magica" da una voce Import-Package in MANIFEST.MF a una voce pom.xml <dependency>? O qualcos'altro?

Grazie in anticipo.

risposta

3

Sì, ci sono altri ostacoli da fare.

In breve, sarà necessario fornire a Tycho un repository da cui è possibile recuperare le dipendenze.

In un po 'più in dettaglio:

  • è necessario impostare la piattaforma di destinazione, e passarlo al Tycho. Immagino che tu abbia già impostato la tua piattaforma target in qualche modo, altrimenti Eclipse si lamenterebbe anche di non aver trovato Netty.
  • Assicurati di condividere la piattaforma di destinazione nel tuo spazio di lavoro, in modo che anche Tycho possa accedervi.
  • Dillo Tycho di utilizzare tale piattaforma di destinazione come this
  • piattaforme di destinazione compatibile Tycho solo layout supporto P2, in modo che nessun directory pianura. Non sono sicuro di quale sia il modo migliore per fare un repo p2 del genere, come ho chiesto a while back. Nessuna risposta, ma vi spiegherò che cosa (sorta) funziona per me.

Speranza che aiuta, Frank

+0

Grazie! La piattaforma di destinazione era ciò che mi mancava. – user1628103

3

La vostra comprensione è piuttosto buona già, ma c'è un piccolo ma fondamentale tassello mancante: A differenza di Maven, non c'è alcun repository predefinito canonica (come "centrale") a Tycho. È necessario configurare il punto in cui Tycho deve cercare la risoluzione delle dipendenze OSGi.

Questo ambito di ricerca è denominato "target platform" in Tycho. Ci sono different ways so include artifacts in the target platform; il più semplice è configurare il repository p2 che contiene le dipendenze in POM con un attributo <layout>p2</layout> aggiuntivo (supponendo che tu conosca un repository p2 contenente le dipendenze.)

0

C'è anche la possibilità di aggiungere il bundle mancante tramite dipendenza extra configurazione, direttamente al bundle non funzionante:

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