Goomph:将 IDE 作为构建产物另有用于处理 SWT、OSGi、p2 和 Eclipse RCP 的插件
多个 Eclipse IDE 安装实例可以共享一组公共的已安装工件,这组工件称为“bundlepool”。这意味着,可以为每个项目快速高效地获得一个量身定制的 IDE,并预先配置好适合当前项目的所有插件和设置。
当你运行 gradlew ide 时,它会构建并下载一个仅包含你所需功能的 IDE 到 build/oomphIde。一旦所有公共工件已缓存在 ~/.goomph 中,整个过程只需约 15 秒和 1MB 磁盘空间。
apply plugin: 'com.diffplug.oomph.ide'
oomphIde {
repoEclipseLatest()
jdt {}
eclipseIni {
vmargs('-Xmx2g') // IDE can have up to 2 gigs of RAM
}
style {
classicTheme() // oldschool cool
niceText() // with nice fonts and visible whitespace
}
}
快速入门请参阅插件 javadoc,更多示例和深入细节请参阅 HOW_TO_AUTOMATE_IDE.md。
事实证明,实现“将 IDE 作为构建产物”所需的工具,正是操作 Eclipse 项目文件以及构建 Eclipse 插件和 RCP 应用程序所需的同一套工具。这就是 Goomph 的另一面。示例项目请参阅 Gradle 与 Eclipse RCP 演讲。
使用 Goomph 构建的真实世界 Eclipse 软件:
以下是 Goomph 的功能索引,并附有可查阅使用示例的 javadoc 链接。
com.diffplug.eclipse Eclipse 项目文件以及 Eclipse 版本映射的 maven central 工件。apt 修复 Eclipse 项目,使其兼容 Gradle 注解处理。mavencentral 让从某个 Eclipse 发行版添加依赖 jar 变得简单。buildproperties 使用 build.properties 来控制 gradle 构建,并修复 Eclipse 项目类路径,使其包含 build.properties 中指定的二进制资源。excludebuildfolder 将 gradle 的 build 文件夹从 Eclipse 的资源索引中排除。projectdeps 修复一个间歇性问题:工作区内对其他项目的依赖在 Eclipse 中并非总能被正确解析。resourcefilters 向 Eclipse 项目添加资源过滤器。com.diffplug.osgi 用于处理 OSGi 的插件。bndmanifest 完全使用 bnd 生成 manifest,并输出供 IDE 消费。equinoxlaunch 可以在构建过程中配置并运行 Equinox 应用程序,例如代码生成器。OsgiExecable 让你可以轻松地在 OSGi 容器内运行一段代码,并从容器外部获取结果。com.diffplug.p2 一个 A 以及用于操作 p2 数据的插件。asmaven 从 p2 仓库下载依赖,并将其提供给本地 maven 仓库使用。P2Model 对一组 p2 仓库和 IU 进行建模,并提供便捷方法,用于针对这些仓库和 IU 运行 p2-director 或 p2.mirror ant 任务。P2AntRunner 运行 Eclipse ant 任务。CategoryPublisher 对 CategoryPublisher Eclipse 应用程序进行建模。FeaturesAndBundlesPublisher 对 FeaturesAndBundlesPublisher Eclipse 应用程序进行建模。Repo2Runnable 对 Repo2Runnable Eclipse 应用程序进行建模。com.diffplug.gradle.pde 使用下载的 Eclipse 实例运行 Eclipse PDE 的任务。PdeBuildTask 运行 PDE build 来构建 RCP 产品。PdeAntBuildTask 针对 ant 文件运行 PDE。com.diffplug.gradle 其他基础设施。CmdLineTask 运行一系列 shell 命令,期间可能还会复制或移动文件。JavaExecable 让你可以轻松地在独立的 JVM 中运行一段代码,并把结果取回当前 JVM。JavaExecWinFriendly 克服 Windows 命令行长度和超长类路径的限制。com.diffplug.gradle.eclipserunner 用于运行无头(headless)Eclipse 应用程序的基础设施。com.diffplug.configuration-cache-for-platform-specific-build 允许你在 gradle 构建中使用 OS.getNative() 和 OS.getRunning(),而不会破坏配置缓存。eclipseMavenCentral 插件的多次修复。net.ltgt.apt-eclipse 插件。
com.diffplug.eclipse.apt 中维护它。CategoryPublisher 应用程序(#126)。3.10.0 版本中的每一项改进。BndManifestPlugin 的 osgibnd-gradle-plugin。