【问题标题】:Import SWT the Gradle way in Eclipse在 Eclipse 中以 Gradle 方式导入 SWT
【发布时间】:2016-11-25 08:53:04
【问题描述】:

在Eclipse Java项目中导入SWT Gradle方式的正确方法是什么?

Stackoverflow 上的以下解决方案不起作用(它导入了一个不包含类的小型 SWT 库,我无法使用任何 SWT 功能):

Import SWT as a Gradle dependency

我的应用程序需要使用 SWT UI 类和小部件(例如 Display、Shell、Composites 等)并且必须绝对是跨平台的。

请注意,我的应用程序也使用 LWJGL,我可以使用下面的页面成功导入它,该页面确实提供了要使用的完整 Gradle 代码(单击 Release 下的 build,然后选择 Gradle):

LWJGL build.gradle import code

感谢您的帮助。

【问题讨论】:

  • 你能提供你的 Gradle 构建文件的相关部分吗?
  • 我的 build.gradle 文件如下(这是您在 Eclipse 中创建新的普通 Gradle 项目时得到的):pastebin.com/w6fESNip。我应该声明什么才能正确导入 SWT 并使一切跨平台?

标签: eclipse gradle swt


【解决方案1】:

从 Eclipse 4.6.2 开始,SWT(以及所有 Eclipse)发布到 maven Central。如果您使用的是 Gradle,goomph 插件有一个 mavencentral 插件,它非常简单:

apply plugin: 'com.diffplug.gradle.eclipse.mavencentral'
eclipseMavenCentral {
  release '4.7.0', {
    compile 'org.eclipse.swt'
    useNativesForRunningPlatform()
  }
}

【讨论】:

  • 它不起作用; eclipseMavenCentral 无法识别。最好粘贴完整的 gradle 脚本。
  • 好的,确实有效。 Gradle 刚刚给了我 SWT 3.106。好的,这就是方法,只需将其作为完整答案并通知 OP 接受即可。我所做的是在plugin {} 部分下添加id "com.diffplug.gradle.eclipse.mavencentral" version "3.17.3"。 PS:我希望 Eclipse 团队可以把它说得更清楚,所以我们不必在这里搜索而不是在文档中搜索.....
【解决方案2】:

我不完全确定 eclipse 插件和 SWT 应用程序之间的区别,但您可以使用 buildship build 作为参考。 buildSrc 实用程序可能有用。

【讨论】:

  • 谢谢。不幸的是,这个 build.gradle 文件中有很多东西。我没有使用插件项目,只是一个普通的 Java Gradle 项目。您介意帮我隔离与 SWT 相关的行并将这些行合并到上面提供的代码中吗(请参阅 pastebin 链接)?
  • “您是否介意帮我隔离与 SWT 相关的行并将这些行合并到上面提供的代码中”不,谢谢
【解决方案3】:

** 免责声明 ** 我以前从未使用过 SWT

我会将 SWT jar 放在类似 maven 的目录结构中(注意我在这里选择了随机组/工件/版本...请适当调整)

myRepo/com/eclipse/swt/swt-core/4.1/swt-core-4.1-windows.jar
myRepo/com/eclipse/swt/swt-core/4.1/swt-core-4.1-linux.jar
myRepo/com/eclipse/swt/swt-utils/4.1/swt-utils-4.1-windows.jar
myRepo/com/eclipse/swt/swt-utils/4.1/swt-utils-4.1-linux.jar

你可以在build.gradle做这样的事情

org.gradle.nativeplatform.platform.OperatingSystem os = org.gradle.internal.os.OperatingSystem.current()
def osDeps = []
if (os.windows) {
    osDeps = ['com.eclipse.swt:swt-core:4.1:windows', 'com.eclipse.swt:swt-utils:4.1:windows']
} else if (os.linux) {
    osDeps = ['com.eclipse.swt:swt-core:4.1:linux', 'com.eclipse.swt:swt-utils:4.1:linux']
} else ... {
}

apply plugin: 'java'
repositories {
    maven {
        url file('myRepo')
    }
}
dependencies {
   compile 'com.foo:common-stuff:1.0'
   compile osDeps 
}

或者,如果 SWT jar 在 maven 存储库中可用,您应该使用它而不是本地文件夹。

【讨论】:

  • 那行不通。一种可行的解决方案是此文件中列出的解决方案:github.com/breskeby/gradle-eclipse-plugin/blob/master/plugins/… 我也在使用 core.commands,并且“compile 'org.eclipse:core.commands:3.+'”不起作用,尽管“core :commands" 有效。我想这是因为我们使用不同的存储库。真是一团糟。
【解决方案4】:

要完成@Ned Twigg 的回答,完整的build.gradle 文件应该是这样的:

plugins {
    id 'java'
    id "com.diffplug.gradle.eclipse.mavencentral" version "3.17.3"
}
...
apply plugin: 'com.diffplug.gradle.eclipse.mavencentral'
eclipseMavenCentral {
    release '4.7.0', {
        compile 'org.eclipse.swt' // SWT for Windows in Gradle
        useNativesForRunningPlatform()
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-23
    相关资源
    最近更新 更多