Domanda

Come faccio a creare un'applicazione SWT utilizzando il repository Eclipse P2 e il Maven Tycho-p2-plugin?

È stato utile?

Soluzione

È possibile definire gli ambienti di destinazione per il 'target-platform-configurazione' plugin. Qualunque cosa si sta costruendo RCP o caratteristiche per ambienti multipli, potete lasciare il vostro funzione per includere i frammenti di SWT per questi host.

        <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</arch>
                    </environment>
                    <environment>
                        <os>win32</os>
                        <ws>win32</ws>
                        <arch>x86</arch>
                    </environment>
                    <environment>
                        <os>solaris</os>
                        <ws>gtk</ws>
                        <arch>sparc</arch>
                    </environment>
                </environments>
            </configuration>
        </plugin>

Snippet in Feature.xml

   <plugin
         id="org.eclipse.swt"
         download-size="0"
         install-size="0"
         version="0.0.0"
         unpack="false"/>

   <plugin
         id="org.eclipse.swt.gtk.linux.x86"
         os="linux"
         ws="gtk"
         arch="x86"
         download-size="0"
         install-size="0"
         version="0.0.0"
         fragment="true"
         unpack="false"/>

   <plugin
         id="org.eclipse.swt.win32.win32.x86"
         os="win32"
         ws="win32"
         arch="x86"
         download-size="0"
         install-size="0"
         version="0.0.0"
         fragment="true"
         unpack="false"/>

Altri suggerimenti

Ho trovato il problema. Sfondo:. Sto costruendo il plugin editor di cui xtext genera per DSL

Il plugin dipende org.eclipse.swt;version=3.7.0. Il packaging è eclipse-plugin. Sto che elenca tutti gli ambienti necessari nel mio genitore POM .

Il repository P2 è uno specchio locale sul mio hard disk, che riempio esportando una definizione degli obiettivi (file * .target).

Il problema è che l'esportazione di una definizione di target creerà qualcosa che assomiglia molto a un pronti contro termine p2, ma ci sono sottili differenze.

Ad esempio, è necessario definire un ambiente di destinazione (Linux / Windows / Mac, x86 / x86_64, win32 / cacao / gtk) nel file di definizione di destinazione. Se non si specifica nulla, Eclipse utilizzerà la piattaforma corrente. Se si utilizza "*", saranno omessi tutti i frammenti SWT.

Ciò significa che: L'esportazione contiene tutti i frammenti SWT (30 plugins nella cartella plugins/), sono menzionati nella contents.jar ma il artifact.jar elenca solo il frammento SWT singolo, che corrisponde al tuo piattaforma corrente ( ossia il fascio più sorgenti).

Questo non è sufficiente per Tycho.

Soluzione: creare una vera e propria repo p2 utilizzando questo piccolo script:

# Where you exported the Target Definition
dir="$HOME/3.7.1-from-target-platform"

# Where the result should be written. Must be != dir
dest="$HOME/3.7.1-from-target-platform-fixed"

# Make sure subsequent invocations don't try to merge old stuff
rm -rf "$dest"

# Prepend "file:" to create a URL from the path
dest="file:$dest"

echo "Merging $dir..."
./eclipse -nosplash \
    -application org.eclipse.equinox.p2.publisher.FeaturesAndBundlesPublisher \
    -metadataRepository "$dest" \
    -artifactRepository "$dest" \
    -repositoryName "3.7.1 Indigo Repository" \
    -source "$dir" \
    -compress -append -publishArtifacts

Esegui questo all'interno di un impianto Eclipse lavoro.

Tycho permette di costruire e roba di compilazione basati su Eclipse, compresi i plugin, dispone, e le applicazioni RCP. Sulla pagina ufficiale del progetto ci sono un sacco di buon tutorial, ma nel mio caso ho usato il progetto di esempio ( http://git.eclipse.org/c/tycho/org.eclipse.tycho-demo.git/tree/itp04-rcp ).

Tuttavia, se non avete bisogno di costruire alcuni plugin o un'applicazione RCP, penso che non hai bisogno di Tycho: appena possibile importare SWT come un normale dipendenza Maven e costruire la vostra applicazione in questo modo ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top