Frage

Wie erstelle ich eine SWT Anwendung der Eclipse-P2-Repository und die Maven tycho-p2-Plugin?

War es hilfreich?

Lösung

Sie können die Zielumgebungen für ‚zielplattform Konfiguration‘ Plugin definieren. Was auch immer Sie bauen RCP oder Funktionen für mehrere Umgebungen, können Sie Ihre Funktion, um die Fragmente von swt für diese Hosts enthalten.

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

Andere Tipps

Ich fand das Problem. Hintergrund:. Ich baue die Editor-Plugin, das Xtext für DSLs erzeugt

Das Plugin ist abhängig von org.eclipse.swt;version=3.7.0. Die packaging ist eclipse-plugin. Ich Auflistung aller notwendigen Umgebungen in meiner Eltern POM .

Die p2-Repository ist ein lokaler Spiegel auf meiner Festplatte, die ich durch den Export einer Zielgrößendefinition (* .TARGET-Datei) zu füllen.

Das Problem ist, dass eine Zielgrößendefinition exportieren etwas zu schaffen, die viel wie ein p2 Repo aussieht, aber es gibt feine Unterschiede.

Zum Beispiel haben Sie eine Zielumgebung zu definieren (Linux / Windows / Mac, x86 / x86_64, win32 / Kakao / gtk) in der Zieldefinitionsdatei. Wenn Sie nichts angeben, wird von Eclipse die aktuelle Plattform nutzen. Wenn Sie „*“, alle SWT-Fragmente verzichtet werden verwendet werden.

Das bedeutet: Der Export enthält alle SWT-Fragmente (30 Plugins im plugins/ Ordner), werden sie in dem contents.jar erwähnt, aber die artifact.jar listet nur das einzelne SWT-Fragment, das Ihre aktuelle Plattform übereinstimmt ( dh das Bündel und die Quellen).

Dies ist nicht genug für Tycho.

Lösung: Erstellen Sie eine richtige p2 Repo dieses kleine Skript:

# 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

Führen Sie diese innerhalb einer Arbeits Eclipse-Installation.

Tycho können Sie & Kompilierung Eclipse-basierte Material bauen, einschließlich Plugins, Funktionen und RCP-Anwendungen. Auf der offiziellen Projektseite gibt es jede Menge guten Tutorial, aber in meinem Fall habe ich das Beispielprojekt ( http://git.eclipse.org/c/tycho/org.eclipse.tycho-demo.git/tree/itp04-rcp ).

Allerdings, wenn Sie nicht brauchen, einige Plugins oder eine RCP-Anwendung zu erstellen, ich glaube, Sie tycho nicht benötigen: Sie können nur SWT als normale Maven Abhängigkeit importieren und bauen Sie Ihre App auf diese Weise ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top