在Eclipse中导入SWT Gradle方式

时间:2016-11-25 08:53:05

标签: eclipse gradle swt

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

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

Import SWT as a Gradle dependency

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

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

LWJGL build.gradle import code

感谢您的帮助。

4 个答案:

答案 0 :(得分: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()
  }
}

答案 1 :(得分:0)

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

答案 2 :(得分:0)

**免责声明**我之前从未使用过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存储库中可用,则应使用该jar而不是本地文件夹。

答案 3 :(得分:0)

要完成@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()
    }
}