Jak zbudować aplikację SWT przy użyciu repozytorium Eclipse P2 i Maven Tycho-P2-plugin?Wykorzystanie Maven Tycho-P2-plugin z SWT
Odpowiedz
Możesz zdefiniować środowiska docelowe dla wtyczki "docelowa platforma-konfiguracja". Niezależnie od tego, czy tworzysz RCP, czy funkcje dla wielu środowisk, możesz pozwolić swojej funkcji na dołączenie fragmentów swt dla tych hostów.
<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>
urywek w 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"/>
Buduję wtyczkę ('
Tycho pozwala budować & kompilacji rzeczy oparte na Eclipse, w tym wtyczek, funkcji i aplikacji RCP. Na oficjalnej stronie projektu znajduje się mnóstwo dobrych samouczków, ale w moim przypadku użyłem przykładowego projektu (http://git.eclipse.org/c/tycho/org.eclipse.tycho-demo.git/tree/itp04-rcp).
Jednakże, jeśli nie trzeba zbudować kilka wtyczek albo RCP aplikacji, myślę, że nie trzeba Tycho: po prostu może importować SWT jako normalny zależnością maven i budować swoją aplikację w ten sposób ...
Ten przykład wygląda dobrze, ale to nie wyjaśnia, jak to działa. Mój problem polega na tym, że dostaję komunikat o błędzie ("Nie mogłem określić pakietu fragmentów implementacji SWT") i nie mam pojęcia, jak się go pozbyć.Prawdopodobnie brakuje mi niektórych szczegółów, ponieważ wszystkie oczywiste ustawienia w moim projekcie są takie same jak w wersji demonstracyjnej. –
+1, przykład RCP tycho demonstruje, jak zbudować aplikację dla wielu środowisk, takich jak Windows i Linux. – Kane
@Kane: Nie buduję produktu RCP, ale pakiet, który zależy od SWT. –
znalazłem problem. Tło: Buduję wtyczkę edytora, którą Xtext generuje dla DSL.
Wtyczka zależy org.eclipse.swt;version=3.7.0
. Numer packaging
to eclipse-plugin
. Jestem listing all the necessary environments in my parent POM.
Repozytorium p2 jest lokalnym lustro na moim twardym dysku, który wypełnić eksportując definicję docelowego (plik * .target).
Problemem jest to, że eksportowanie definicję celu stworzy coś, co wygląda trochę jak repo p2 ale istnieją subtelne różnice.
Na przykład musisz zdefiniować środowisko docelowe (Linux/Windows/Mac, x86/x86_64, win32/cocoa/gtk) w pliku definicji celu. Jeśli nic nie podasz, Eclipse użyje bieżącej platformy. Jeśli użyjesz "*", wszystkie fragmenty SWT zostaną pominięte.
To znaczy: Wywóz zawiera wszystkie fragmenty SWT (30 wtyczek w folderze plugins/
), są one wymienione w contents.jar
ale artifact.jar
wymienia tylko pojedynczy fragment SWT, która odpowiada aktualnej platformy (czyli pakiet Plus żródła).
To nie wystarczy dla Tycho.
Rozwiązanie: Tworzenie właściwej repo p2 korzystając ten mały skrypt:
# 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
Uruchom ten wewnątrz pracy instalacji Eclipse.
- 1. Tworzenie aplikacji architektury wielostronicowej SWT z Maven
- 2. JFreeChart z SWT
- 3. Scala SWT z SBT
- 4. Porównaj SWT z SWINGEM
- 5. Jak rozmawiać z funkcją JavaScript z SWT
- 6. Ustawianie kolorów w SWT
- 7. Pozbycie migotania w SWT
- 8. SWT - Wyświetlanie zajętego kursora
- 9. Konwersja z BufferedImage do SWT obrazu
- 10. SWT x64 z xulrunner 3.6.28 x86
- 11. SWT: Tabela z komórkami obejmującymi kolumny
- 12. Zmiana wyglądu kart SWT
- 13. "Szybkie wyszukiwanie" dla tabeli SWT
- 14. SWT nazwa combobox/para kluczy
- 15. Java SWT: widgetSelected vs widgetDefaultSelected
- 16. SWT Zmiana formatu daty DateTime
- 17. MigLayout Wykorzystanie
- 18. Wykorzystanie sigaction()
- 19. Context.isPointInPath Wykorzystanie
- 20. AccessController Wykorzystanie
- 21. jQuery.proxy() wykorzystanie
- 22. Maven - kompilacja z zależnościami
- 23. Uruchamianie Gradle z Maven
- 24. Maven z Eclipse Juno
- 25. Import-Module z GAC dla PowerShell Wykorzystanie
- 26. Forecast.io Wykorzystanie interfejsu API z jQuery
- 27. Ponowne wykorzystanie połączenia TCP z HttpsUrlConnection
- 28. Jak otworzyć plik z domyślną aplikacją w SWT?
- 29. SWT: Rozgałęzione układy z przewiniętym układem przekraczają dostępne miejsce
- 30. Czy istnieje sposób na wykorzystanie programu maven do automatyzacji reintegracji gałęzi obiektów?
Chciałbym zobaczyć, jak dobrze - powodzenia z odpowiedzią :) – javamonkey79
choć nie mogę znaleźć szczegółów problemu. Potrzebujesz więcej informacji. – Kane
@Kane: Co powoduje komunikat o błędzie "Nie można określić pakietu fragmentu implementacji SWT"? Które informacje brakuje w POM? –