首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何构建依赖于Eclipse的Eclipse插件项目?

如何构建依赖于Eclipse的Eclipse插件项目?
EN

Stack Overflow用户
提问于 2014-09-25 10:01:30
回答 2查看 921关注 0票数 4

我有一组Maven项目,我想迁移到SBT。

Tne唯一阻止我这么做的是一个项目,它是一个Eclipse插件,它与Eclipse有依赖关系。

Maven的Tycho插件处理所有依赖项。此工具在SBT中不可用。我已经为SBT找到了泰丘插件,但是它看起来像一个没有维护的插件(3年没有活动)。

也许我可以用Maven构建Eclipse插件,用SBT构建其余的项目。但我不知道这是否可能。

其他的选择是使用Gradle,通过wuff插件

StackOverflow中的相关问题:

但我更喜欢在Maven或Gradle之前使用SBT,以避免引入Scala以外的另一种语言。

除了使用Tycho (Eclipse插件)的项目之外,是否有可能在SBT中拥有所有项目?Eclipse插件项目是主项目的依赖项,很少更改。

有什么想法吗?

更新1:其他信息。Eclipse插件使用p2存储库格式来处理依赖关系,而不是用于Gradle、Maven、Ivy和SBT的标准Maven存储库。这就是为什么需要特殊的工具。我的自定义Eclipse插件有超过100个间接的p2依赖项。

更新2

我的pom.xml插件:

代码语言:javascript
复制
<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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-13 08:46:15

看来对于带有OSGi包的的支持在常春藤中已经可用.但是,这并不意味着解析器可以直接在sbt中使用(我从未读过它,也从未见过它在使用中,所以我可能弄错了)。

有一种使用externalIvySettings()将常春藤的任何解析器包含在sbt中的方法

按照Maven (pom.xml)或Ivy (ivy.xml和可选的ivysettings.xml)创建配置文件。通过使用下列表达式之一选择外部配置。

常春藤设置(解析器配置)externalIvySettings常春藤文件(依赖关系配置)externalIvyFile

我的猜测是,您可能会非常成功地利用支持。只需将externalIvySettings和/或externalIvyFile添加到build.sbt中,并在Eclipse项目的顶层目录中创建带有艾薇的Eclipse更新解析器声明的ivy.xml

您可能希望使用下面的build.sbt来探索这种支持

代码语言:javascript
复制
externalIvySettings()

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

ivysettings.xml放在项目的顶层目录中(与build.sbt一起):

代码语言:javascript
复制
<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>

有了上面的两个文件,我就可以update,直到某些package出现故障:

代码语言:javascript
复制
> 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
票数 2
EN

Stack Overflow用户

发布于 2014-12-23 17:10:44

另一个解决方案(我还没有尝试)是使用sbt管理器插件,为此目的而设计的。它受到了积极的重视。

我将用我的经验更新这个答案。

UPDATE:在第一次尝试中,它对我不起作用。

最后的解决方案是为Birt插件使用一个标准的Maven存储库。这个解决方案有利于嵌入Birt运行时,但不适合一个完整的RCP应用程序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26035749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档