【发布时间】:2014-09-25 10:01:30
【问题描述】:
我有一组 Maven 项目想要迁移到 SBT。
唯一阻止我这样做的原因是,它是一个 Eclipse 插件项目,它依赖于 Eclipse Birt。
Maven 的Tycho plugin 处理所有依赖项。此工具在 SBT 中不可用。我找到了 SBT 的 sbt-tycho 插件,但它看起来没有维护(3 年没有活动)。
也许我可以使用 Maven 构建我的 Eclipse 插件,并使用 SBT 构建其余项目。但不知道这是否可行。
其他替代方法是通过the wuff plugin 使用Gradle。
StackOverflow 中的相关问题:
- How to build an eclipse plugin with sbt and sbt-osgi?
- Can Apache Ivy handle dependencies in p2 repositories?
但在 Maven 或 Gradle 之前,我更喜欢 SBT,以免引入除 Scala 之外的另一种语言。
除了使用 Tycho(Eclipse 插件)的项目外,是否可以在 SBT 中拥有所有项目? Eclipse插件项目是主项目的依赖,很少改动。
有什么想法吗?
更新 1:附加信息。 Eclipse 插件使用p2 repository 格式来处理依赖关系,而不是用于 Gradle、Maven、Ivy 和 SBT 的标准 Maven 存储库。这就是为什么需要特殊工具的原因。我的自定义 Eclipse 插件有 100 多个间接 p2 依赖项。
更新 2
pom.xml 我的 Eclipse 插件:
<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>
【问题讨论】:
-
您能否详细说明“也许我可以使用 Maven 构建我的 Eclipse 插件,而其他项目则使用 SBT。但不知道这是否可能。”?确实可以在一个项目中使用 Maven 而在其他项目中使用 sbt。您还想保留目录结构吗?结构应该如何?
-
目录结构可以根据需要更改。
-
其他项目何时需要Eclipse插件项目?它们之间有什么关系?
-
有一个主项目和几个附属项目。其中一个卫星是 Eclipse 插件,它为 Eclipse Birt 提供自定义数据。主项目使用与卫星项目相同的 Eclipse Birt 插件。因此,使用自定义 Eclipse 插件的传递依赖,带来所有需要的 Birt 依赖。问题在于 Eclipse 插件使用自定义存储库布局:“p2”而不是标准 Maven 布局。
-
啊,那么真正的问题是 p2 存储库布局吗?那是什么?
标签: eclipse-plugin sbt tycho