2

Gradleで動作するサンプルLWJGLアプリケーションを取得しようとしています。LWJGLには、jar lwjgl-platform-2.8.5-natives-windows.jarなどにOpenGLとOpenALのネイティブバインディングがありますが、Gradleはこの事実を認識していないようです。

アプリケーションプラグインのdistZipタスクは、すべてのjarファイルをzip内のlibディレクトリに適切にコピーしますが、.batファイルでは、前述のネイティブjarのみをクラスパスに配置し、明示的にネイティブとしてjavaに渡しません。

同様に、Eclipseプロジェクトの生成でも、特定の依存関係の「ネイティブライブラリの場所」を設定できません。

生成されたアプリケーションまたはEclipseプロジェクトにネイティブライブラリを適切に追加するための公式の解決策はありますか?そうでない場合は、この制限を回避するための優れたハックはありますか?

私のgradle.build:

apply plugin: 'java'
apply plugin: 'application'
apply plugin: 'eclipse'

sourceCompatibility = 1.7

mainClassName = 'org.lwjgl.examples.Game'

repositories {
    mavenCentral();
}

dependencies {
    compile group: 'com.google.guava', name: 'guava', version: 'latest.release'
    compile group: 'org.apache.commons', name: 'commons-lang3', version: 'latest.release'
    compile group: 'org.lwjgl.lwjgl', name: 'lwjgl', version: 'latest.release'

    testCompile group: 'com.jayway.awaitility', name: 'awaitility', version: 'latest.release'
    testCompile group: 'junit', name: 'junit', version: 'latest.release'
    testCompile group: 'org.hamcrest', name: 'hamcrest-all', version: 'latest.release'
    testCompile group: 'org.mockito', name: 'mockito-core', version: 'latest.release'
}

jar {
    baseName = rootProject.name
    version = System.env['BUILD_NUMBER']
    version = version == null ? 0 : version
    manifest {
        attributes("Implementation-Title": baseName, "Implementation-Version": version)
    }
}

生成されたzipディストリビューションの内容:

/lib//bin/tyle
/lib//bin/tyle.bat
/lib/commons-lang3-3.1.jar
/lib/guava-14.0-rc2.jar
/lib/jinput-2.0.5.jar
/lib/jinput-platform-2.0.5-natives-linux.jar
/lib/jinput-platform-2.0.5-natives-osx.jar
/lib/jinput-platform-2.0.5-natives-windows.jar
/lib/jutils-1.0.0.jar
/lib/lwjgl-2.8.5.jar
/lib/lwjgl-platform-2.8.5-natives-linux.jar
/lib/lwjgl-platform-2.8.5-natives-osx.jar
/lib/lwjgl-platform-2.8.5-natives-windows.jar
/lib/tyle-0.jar

lwjgl-platform-2.8.5-natives-windows.jarの内容:

META-INF/MANIFEST.MF
lwjgl.dll
lwjgl64.dll
OpenAL32.dll
OpenAL64.dll
4

1 に答える 1

5

私は同様の問題に取り組んでおり、Java ライブラリのネイティブ依存関係を管理するためのGradle Natives プラグインを開始しました。詳細については、ブログ記事「Going Native with Gradle」も参照してください。

基本的に、提供されたネイティブ ライブラリを "natives" ビルド ディレクトリに展開して使用し、さらにパッケージ化します。

于 2014-03-19T17:07:43.023 に答える