2010-06-27 28 views
6

Làm cách nào để xây dựng một ứng dụng SWT bằng cách sử dụng kho lưu trữ P2 của Eclipse và plugin tycho-p2-Maven?Cách sử dụng của Maven tycho-p2-plugin với SWT

+0

Tôi cũng muốn thấy điều này - chúc may mắn với câu trả lời mặc dù :) – javamonkey79

+0

Tôi không thể tìm thấy chi tiết về sự cố của bạn. Cần thêm thông tin chứ. – Kane

+0

@Kane: Điều gì gây ra thông báo lỗi "Không thể xác định gói phân đoạn triển khai SWT"? Thông tin nào bị thiếu trong POM của tôi? –

Trả lời

4

Bạn có thể xác định môi trường đích cho plugin 'target-platform-configuration'. Dù bạn đang xây dựng RCP hoặc các tính năng cho nhiều môi trường, bạn có thể cho phép tính năng của bạn bao gồm các đoạn swt cho các máy chủ này.

 <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 trong 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"/> 
+0

Tôi đang xây dựng một plugin (' eclipse-plugin') Tôi có mục 'environment' và tôi có các plugin cần thiết trong repo p2 cục bộ của mình nhưng Tycho không thể quyết định cái nào cần chọn. –

2

Tycho cho phép bạn tạo & biên dịch các công cụ dựa trên nhật thực, bao gồm các plugin, các tính năng và các ứng dụng RCP. Trên trang dự án chính thức có một tấn hướng dẫn tốt, nhưng trong trường hợp của tôi, tôi đã sử dụng dự án mẫu (http://git.eclipse.org/c/tycho/org.eclipse.tycho-demo.git/tree/itp04-rcp).

Tuy nhiên, nếu bạn không cần phải xây dựng một số plugin hoặc một ứng dụng RCP, tôi nghĩ rằng bạn không cần Tycho: bạn chỉ có thể nhập SWT như một sự phụ thuộc maven bình thường và xây dựng ứng dụng của bạn theo cách đó ...

+0

Ví dụ đó có vẻ tốt nhưng điều đó không giải thích cách hoạt động của nó. Vấn đề của tôi là tôi nhận được một thông báo lỗi ('Không thể xác định gói bó thực hiện SWT') và tôi không có ý tưởng làm thế nào để thoát khỏi nó.Nó có lẽ là một số chi tiết mà tôi đang thiếu vì tất cả các thiết lập rõ ràng trong dự án của tôi là giống như trong bản demo. –

+0

+1, ví dụ RCP của tycho thể hiện cách xây dựng một ứng dụng cho nhiều môi trường, chẳng hạn như Windows và Linux. – Kane

+0

@Kane: Tôi không xây dựng một sản phẩm RCP mà là một gói phụ thuộc vào SWT. –

2

tôi thấy vấn đề. Bối cảnh: Tôi đang xây dựng trình chỉnh sửa plugin mà Xtext tạo cho DSL.

Plugin phụ thuộc vào org.eclipse.swt;version=3.7.0. packagingeclipse-plugin. Tôi là listing all the necessary environments in my parent POM.

Kho lưu trữ p2 là một máy nhân bản cục bộ trên đĩa cứng mà tôi điền vào bằng cách xuất Định nghĩa mục tiêu (* .tệp đích).

Vấn đề là việc xuất Định nghĩa mục tiêu sẽ tạo ra thứ gì đó trông rất giống với repo p2 nhưng có những khác biệt nhỏ. Ví dụ: bạn phải xác định môi trường đích (Linux/Windows/Mac, x86/x86_64, win32/cocoa/gtk) trong tệp Định nghĩa đích. Nếu bạn không chỉ định bất cứ điều gì, Eclipse sẽ sử dụng nền tảng hiện tại. Nếu bạn sử dụng "*", tất cả các đoạn SWT sẽ bị bỏ qua.

Điều này có nghĩa: Việc xuất khẩu có chứa tất cả các mảnh vỡ SWT (30 plugin trong thư mục plugins/), họ được đề cập trong contents.jarnhưng artifact.jar chỉ liệt kê các mảnh SWT duy nhất mà phù hợp với nền tảng hiện tại của bạn (tức là bó cộng các nguồn).

Điều này không đủ cho Tycho.

Giải pháp: Tạo một repo p2 thích hợp sử dụng script nhỏ này:

# 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 

Run bên này của một cài đặt Eclipse làm việc.

Các vấn đề liên quan