2015-10-04 54 views
0

我正在使用学习LibGDX游戏开发,我试图遵循Gradle的方式。在144页的底部第4章,它说添加:来自LibGdx书籍的不良gradle代码?

compile "com.badlogic.gdx:gdx-tools:$gdxVersion" 

与此代码段下面:

project(":desktop") 

,我从本书的网站继承下面张贴的的build.gradle。我在“-desktop”部分添加了代码,但是我从Eclipse中得到了一个错误。

这是我的错误:

Could not find method compile() for arguments [com.badlogic.gdx:gdx- 
tools:1.6.4] on [email protected]d80175. 

我崭新的品牌,以摇篮,没有任何人知道,如果我想通过摇篮添加GDX-tools.jar中,我应该怎么办呢?

的build.gradle桌面项目:

apply plugin: "java" 

sourceCompatibility = 1.6 
sourceSets.main.java.srcDirs = [ "src/" ] 

project.ext.mainClassName = "com.packetpub.libgdx.canyonbunny.desktop.DesktopLauncher" 
project.ext.assetsDir = new File("../android/assets"); 

task run(dependsOn: classes, type: JavaExec) { 
    main = project.mainClassName 
    classpath = sourceSets.main.runtimeClasspath 
    standardInput = System.in 
    workingDir = project.assetsDir 
    ignoreExitValue = true 
} 

task dist(type: Jar) { 
    from files(sourceSets.main.output.classesDir) 
    from files(sourceSets.main.output.resourcesDir) 
    from {configurations.compile.collect {zipTree(it)}} 
    from files(project.assetsDir); 

    manifest { 
     attributes 'Main-Class': project.mainClassName 
    } 
} 

dist.dependsOn classes 

eclipse { 
    project { 
     name = appName + "-desktop" 
     linkedResource name: 'assets', type: '2', location: 'PARENT-1-PROJECT_LOC/android/assets' 
     compile "com.badlogic.gdx:gdx-tools:$gdxVersion" 
    } 
} 

task afterEclipseImport(description: "Post processing after project generation", group: "IDE") { 
    doLast { 
    def classpath = new XmlParser().parse(file(".classpath")) 
    new Node(classpath, "classpathentry", [ kind: 'src', path: 'assets' ]); 
    def writer = new FileWriter(file(".classpath")) 
    def printer = new XmlNodePrinter(new PrintWriter(writer)) 
    printer.setPreserveWhitespace(true) 
    printer.print(classpath) 
    } 
} 
+1

它应该是“com.badlogicgames.gdx:gdx-tools:$ gdxVersion”,请参阅:https://github.com/libgdx/libgdx/wiki/Dependency-management-with-Gradle#tools-gradle – Xoppa

+0

我再也没有遇到这个错误,但是当我进入Gradle-> Refresh Dependencies时,gdx-tools jar不会出现在我的Gradle Dependencies文件夹中。我仍然做错了吗? – smuggledPancakes

+0

你有一个root build.gradle和不同的gradle文件,用于每个子项目(桌面,android,ios等),对不对? – yigiter

回答

1

您使用的是旧域,这是错误的:

编译 “COM badlogic .gdx:GDX-工具:$ gdxVersion”

请更换为这个新:

编译 “COM badlogicgames .gdx:GDX-工具:$ gdxVersion”

确保你把在正确的位置:

Tools Gradle 

Core Dependency: Dont put me in core! 
Desktop Dependency: compile "com.badlogicgames.gdx:gdx-tools:$gdxVersion" 
Android Dependency: Not compatible! 
iOS Dependency: Not compatible! 
HTML Dependency: Not compatible! 
1

它应该是下依赖分支。但是在这个gradle文件中也没有定义gdxVersion的

我假设您可以使用变通方法来定义变量,并在依赖关系下使用,方法是将此代码添加到您共享的gradle文件的末尾。

dependencies { 
    def gdxVersion = '1.6.4' 
    compile "com.badlogic.gdx:gdx-tools:$gdxVersion" 
    //you can add another libraries as well 
} 

但我建议你在模块的libGDX版本的一致性,项目的gradle这个文件管理libGDX依赖。默认情况下,libGDX安装会在项目的根目录中创建build.gradle文件。和gdxVersion变量和libGDX依赖关系在此文件中定义和管理。就像为:

//defines common variables and settings that all projects (modules like desktop, ios, android) use 
allprojects { 
    apply plugin: "eclipse" 
    apply plugin: "idea" 

    version = '1.0' 
    ext { 
     appName = 'YOUR_PROJECT_NAME' 
     gdxVersion = '1.7.0' 
     roboVMVersion = '1.8.0' 
     gwtVersion = '2.6.0' 
    } 

    repositories { 
     mavenCentral() 
     maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } 
     maven { url "https://oss.sonatype.org/content/repositories/releases/" } 
    } 
} 

//and here desktop module specific settings 
project(":desktop") { 
    apply plugin: "java" 

    dependencies { 
     compile project(":core") 
     compile "com.badlogicgames.gdx:gdx-backend-lwjgl:$gdxVersion" 
     compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop" 
     compile "com.badlogicgames.gdx:gdx-tools:$gdxVersion" 
    } 
} 

有了这种用法,你可以看到,所有模块的libGDX依赖可以通过在桌面模块的depencendies以同样的方式来处理。你可以更新你的libGDX版本,只需要修改上面的gdxVersion。