2014-09-25 4 views
4

SBT로 마이그레이션하려는 Maven 프로젝트 세트가 있습니다.Eclipse Birt에 종속 된 이클립스 플러그인 프로젝트를 빌드하는 방법은 무엇입니까?

나는 Eclipse Birt와 종속 관계가있는 이클립스 플러그인 프로젝트입니다.

Maven 용 Tycho plugin은 모든 종속성을 처리합니다. SBT에서는이 도구를 사용할 수 없습니다. SBT 용 sbt-tycho 플러그인을 찾았지만 유지 관리가되지 않은 것처럼 보입니다 (활동이없는 3 년).

아마도 Eclipse 플러그인을 Maven 및 기타 프로젝트와 함께 SBT로 빌드 할 수 있습니다. 그러나 이것이 가능한지 모르겠다.

다른 대안은 the wuff plugin을 사용하여 Gradle을 사용하는 것입니다. 에 StackOverflow에서

관련 질문 :

하지만 스칼라 외에 또 다른 언어를 도입하지 않기 위해, 메이븐 또는 Gradle을하기 전에 SBT 선호합니다.

Tycho (Eclipse 플러그인)를 사용하는 프로젝트를 제외한 모든 프로젝트를 SBT로 가질 수 있습니까? 이클립스 플러그인 프로젝트는 메인 프로젝트의 의존성이며 거의 변경되지 않는다.

아이디어가 있으십니까?

업데이트 1 : 추가 정보 Eclipse 플러그인은 Gradle, Maven, Ivy 및 SBT에 사용되는 표준 Maven 저장소 대신 종속성 처리에 p2 repository 형식을 사용합니다. 그래서 특별한 도구가 필요합니다. 내 사용자 정의 Eclipse 플러그인에는 100 개 이상의 간접 p2 종속성이 있습니다.

업데이트 내 이클립스 플러그인의 2

pom.xml는 :

<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>myCompany</groupId> 
    <artifactId>myPlugin</artifactId> 
    <version>1.0.0-SNAPSHOT</version> 
    <packaging>eclipse-plugin</packaging> 
    <properties> 
    <tycho.version>0.19.0</tycho.version> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <repositories> 
    <repository> 
     <id>eclipse</id> 
     <url>http://download.eclipse.org/releases/kepler</url> 
     <layout>p2</layout> 
    </repository> 
    <repository> 
     <id>babel</id> 
     <url>http://download.eclipse.org/technology/babel/update-site/R0.11.1/kepler</url> 
     <layout>p2</layout> 
    </repository> 
    <repository> 
     <id>logback</id> 
     <url>http://logback.qos.ch/p2/</url> 
     <layout>p2</layout> 
    </repository> 
    </repositories> 

    <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</arch> 
       </environment> 
     </environments> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
</project> 
+0

당신은 *에 정교한 "어쩌면 내 이클립스 메이븐와 플러그인 및 SBT와 프로젝트의 나머지 부분을 만들 수있다.하지만이 가능한 경우 모르겠어요."*? 프로젝트에서 Maven을 사용하고 다른 프로젝트에서는 sbt를 사용할 수 있습니다. 디렉토리 구조를 유지 하시겠습니까? 구조는 어떻게 생겼을 까? –

+0

필요한 경우 디렉토리 구조를 변경할 수 있습니다. –

+0

다른 프로젝트에 Eclipse 플러그인 프로젝트가 필요한시기는 언제입니까? 서로 어떻게 관련이 있습니까? –

답변

2

그것은 그 the support for Eclipse updatesite with OSGi bundles is already available in Ivy 나타납니다. 그러나 결심자를 sbt에서 직접 사용할 수 있다는 것을 의미하지는 않습니다. (필자는 그것에 대해 읽지 않고 사용하기 전에 그것을 본적이 있습니다.

externalIvySettings()를 사용하여 SBT에서 아이비의 해결을 포함하는 방법이있다 :

구성 파일을 생성을 같이하고자 메이븐 ( pom.xml) 또는 아이비 ( ivy.xml 선택적으로 ivysettings.xml)합니다. 외부 구성은 다음 식 중 하나를 사용하여 입니다.

externalIvySettingsIvy settings (resolver configuration)externalIvyFileIvy file (dependency configuration)있다.

내 생각 엔 지원을 제대로 활용 한 것 같습니다.externalIvySettings 및/또는 externalIvyFilebuild.sbt에 추가하고 Ivy's Eclipse updatesite resolver 선언이있는 이클립스 플러그인 프로젝트의 최상위 디렉토리에 ivy.xml을 작성하면됩니다.

당신은 다음과 같은 build.sbt와 지원을 탐험 할 수 있습니다 : 나는 위의 두 파일로

<ivysettings> 
    <settings defaultResolver="chain"/> 
    <resolvers> 
    <chain name="chain"> 
     <ibiblio name="central" m2compatible="true"/> 
     <updatesite name="eclipse-juno" url="http://download.eclipse.org/releases/juno" /> 
    </chain> 
    </resolvers> 
</ivysettings> 

: (build.sbt 함께) 프로젝트의 최상위 디렉토리에

externalIvySettings() 

libraryDependencies += "bundle" % "org.eclipse.swt.cocoa.macosx.x86_64" % "3.100.1.v4234e" 

장소 ivysettings.xml을 최대 package 초에 update까지 실패 할 수 있음 :

> update 
[info] Updating {file:/Users/jacek/sandbox/eclipse-p2/}eclipse-p2... 
:: loading settings :: file = /Users/jacek/sandbox/eclipse-p2/ivysettings.xml 
[warn] module not found: package#org.eclipse.swt.accessibility2;[0.0.0,) 
[warn] ==== central: tried 
[warn] http://repo1.maven.org/maven2/package/org.eclipse.swt.accessibility2/[revision]/org.eclipse.swt.accessibility2-[revision].pom 
[warn] -- artifact package#org.eclipse.swt.accessibility2;[0.0.0,)!org.eclipse.swt.accessibility2.jar: 
[warn] http://repo1.maven.org/maven2/package/org.eclipse.swt.accessibility2/[revision]/org.eclipse.swt.accessibility2-[revision].jar 
[warn] ==== eclipse-juno: tried 
[warn] module not found: package#org.mozilla.xpcom;[0.0.0,) 
[warn] ==== central: tried 
[warn] http://repo1.maven.org/maven2/package/org.mozilla.xpcom/[revision]/org.mozilla.xpcom-[revision].pom 
[warn] -- artifact package#org.mozilla.xpcom;[0.0.0,)!org.mozilla.xpcom.jar: 
[warn] http://repo1.maven.org/maven2/package/org.mozilla.xpcom/[revision]/org.mozilla.xpcom-[revision].jar 
[warn] ==== eclipse-juno: tried 
[warn] :::::::::::::::::::::::::::::::::::::::::::::: 
[warn] ::   UNRESOLVED DEPENDENCIES   :: 
[warn] :::::::::::::::::::::::::::::::::::::::::::::: 
[warn] :: package#org.eclipse.swt.accessibility2;[0.0.0,): not found 
[warn] :: package#org.mozilla.xpcom;[0.0.0,): not found 
[warn] :::::::::::::::::::::::::::::::::::::::::::::: 
[warn] 
[warn] Note: Unresolved dependencies path: 
[warn]  package:org.eclipse.swt.accessibility2:[0.0.0,) 
[warn]  +- bundle:org.eclipse.swt:[3.0.0,4.0.0) 
[warn]  +- bundle:org.eclipse.swt.cocoa.macosx.x86_64:3.100.1.v4234e (/Users/jacek/sandbox/eclipse-p2/build.sbt#L3-4) 
[warn]  +- default:eclipse-p2_2.10:0.1-SNAPSHOT 
[warn]  package:org.mozilla.xpcom:[0.0.0,) 
[warn]  +- bundle:org.eclipse.swt:[3.0.0,4.0.0) 
[warn]  +- bundle:org.eclipse.swt.cocoa.macosx.x86_64:3.100.1.v4234e (/Users/jacek/sandbox/eclipse-p2/build.sbt#L3-4) 
[warn]  +- default:eclipse-p2_2.10:0.1-SNAPSHOT 
+1

감사합니다. Jacek. 시간이있을 때, 나는 그것에 대해 당신에게 이야기하려고 노력할 것입니다. –

+0

그 지역은별로 탐험하지 않았기 때문에 멋져요. (그리고 내가 처음 이래로 도움이 되었기 때문에). 감사! –

+0

작동하지 않습니다. org.apache.ivy.core.resolve.ResolveEngine.resolve (ResolveEngine.java:336)'에'java.lang.ArrayIndexOutOfBoundsException : 0'을 받았습니다. 간단하기 때문에 나는이 해결책을 좋아한다. –

1

또 다른 해결책은 (나는 아직 시도하지 않은)이 목적을 위해 설계된 sbt-osgi-manager 플러그인을 사용하는 것입니다. 그것은 적극적으로 유지됩니다.

본인의 경험으로이 답변을 업데이트하겠습니다.

업데이트 : 첫 시도에서 나에게 적합하지 않습니다.

최종 솔루션은의 BIRT 플러그인에 대한 표준 메이븐 저장소를 사용하는 것이다. 이 솔루션은 Birt 런타임 임베드에 적합하지만 완전한 RCP 앱에는 적합하지 않습니다.

+0

이 링크는 질문에 대답 할 수 있지만 여기에 답변의 핵심 부분을 포함시키고 참조 용 링크를 제공하는 것이 좋습니다. 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않게 될 수 있습니다. – Sentry

+0

플러그인 이름을 수정하여 답변에 배치했습니다. URL이 변경되면 검색 될 수 있습니다. –