2012-11-21 15 views
6

Provo a compilare un'applicazione con Maven e Tycho. Funziona bene se lo costruisco solo per una piattaforma, ma se provo a costruirlo per più la build smette di funzionare.Build Eclipse cross-platform con Maven Tycho

Il problema è che ho plug-in specifici della piattaforma nel mio file di prodotto che voglio costruire. Dipendenze come org.eclipse.swt.win32.win32.x86 che sono plugin di frammento per org.eclipse.swt.
Quando non aggiungo frammenti specifici della piattaforma al mio prodotto, l'applicazione non si avvia perché non ci sono librerie di piattaforme come org.eclipse.swt.win32.win32.x86. Come deposito Tycho utilizziamo un clone del sito di aggiornamento indaco di eclissi ospitato sul nostro server. Include il pacchetto delta. E quando aggiungo tutti i frammenti per tutte le piattaforme, la build si è arrestata in modo anomalo e mi ha detto che i filtri della piattaforma non corrispondevano per esempio alla build di Linux.

Qualcuno sa come risolvere questo problema?
Devo aggiungere queste cose dipendenti dalla piattaforma nel mio prodotto? Preferisco mantenere le dipendenze specifiche dal mio prodotto, ho ragione?

+0

Questa domanda è obsoleta. Il problema descritto si verifica solo in Tycho 0.15.0 e versioni precedenti. – oberlies

risposta

7

Sembra che tu abbia un prodotto basato su plug-in. In questo caso sarà necessario modificare manualmente il file .product e aggiungere filtri di piattaforma per questi plug-in. Sfortunatamente l'editor di prodotto integrato in Eclipse non espone questi valori. Vedi http://wiki.eclipse.org/Tycho/FAQ#How_to_build_plugin-based_products_with_platform-specific_fragments.3F

Per ciascun plug-in, ad es. org.eclipse.swt.win32.win32.x86 dovrai aggiungere qualcosa di simile;

<plugin id="org.eclipse.swt.win32.win32.x86" fragment="true" ws="win32" os="win32" arch="x86"/> 

Nota: se si utilizza l'editor di prodotto, verranno rimossi tali valori.

È preferibile tuttavia utilizzare un prodotto basato su funzionalità. L'editor delle caratteristiche consente di modificare questi campi.

+0

+1 Esattamente quello che stavo cercando – msteiger

+0

Non sembra più necessario in Tycho 0.16.0 (forse già 0.15.0) – msteiger

+1

@msteiger: Questo è corretto. [Da Tycho 0.16.0] (https://bugs.eclipse.org/bugs/show_bug.cgi?id=342890), non è più necessario impostare manualmente gli attributi ws/os/arch nel file del prodotto: il Tycho la build li imposta automaticamente per te. – oberlies

1

C'è una soluzione più semplice che ho trovato nel blog: http://blog.sdruskat.net/building-a-cross-platform-feature-based-eclipse-rcp-product-with-tycho-the-umpteenth/

nel genitore/master pom.xml, Per utilizzare tutti i plugin da P2, specificare quanto segue:

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

    <plugin> 
    <groupId>org.eclipse.tycho</groupId> 
    <artifactId>target-platform-configuration</artifactId> 
    <version>${tycho-version}</version> 
    <configuration> 
     <resolver>p2</resolver> 
     <environments> 
      <environment> 
      <os>linux</os> 
      <ws>gtk</ws> 
      <arch>x86_64</arch> 
      </environment> 
      <environment> 
      <os>win32</os> 
      <ws>win32</ws> 
      <arch>x86_64</arch> 
      </environment> 
     </environments> 
    </configuration> 
    </plugin> 
</plugins> 
</build> 

La mia versione tycho è 0,21,0

Problemi correlati