Minecraft [GRADLE] 1.7.2 - 不能使用外部.jar?

时间:2014-05-04 16:27:19

标签: java eclipse gradle

我在我的mod中使用了apache库httpcomponents。 所以我有7个jar文件,我已经在Eclipse的buildpath中添加了它。

然后使用eclipse编译。当我用eclipse启动我的mod时,它可以工作。

但是当我使用gradle build命令时,不考虑自定义构建路径。

我看到我必须修改build.gradle文件。我试过......

代码:

dependencies {
    classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT'
    compile files('lib/httpcomponents-client/commons-codec-1.6.jar')
    compile files('lib/httpcomponents-client/commons-logging-1.1.3.jar')
    compile files('lib/httpcomponents-client/fluent-hc-4.3.3.jar')
    compile files('lib/httpcomponents-client/httpclient-4.3.3.jar')
    compile files('lib/httpcomponents-client/httpclient-cache-4.3.3.jar')
    compile files('lib/httpcomponents-client/httpcore-4.3.2.jar')
    compile files('lib/httpcomponents-client/httpmime-4.3.3.jar')
}

但它不起作用:

"Could not find method compile() for arguments [file collection] on org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler_Decorated@76454e71."

我尝试使用代码:

dependencies {
    classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT'
    runtime fileTree(dir: 'lib/httpcomponents-client', include: '*.jar')
}

但我也有错误,“无法在org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler_Decorated@40211960上找到参数[directory'lib / httpcomponents-client']的方法runtime()。 “

你能帮帮我吗? 谢谢,抱歉我的英文不好:/

isador34

3 个答案:

答案 0 :(得分:2)

您在非正确的位置添加了依赖项。他们需要进入dependencies { ... },而不是进入buildscript { dependencies { ... } }。前者用于声明代码的依赖关系,后者用于声明构建本身的依赖关系(例如Gradle插件)。

PS:从Maven Central解决这些依赖关系会更容易。

答案 1 :(得分:0)

我假设您正在ForgeGradle github repo工作。如果是这样,我也假设你正在修改他们的build.gradle文件。您可以尝试以类似的方式声明您的依赖项。例如,而不是

 compile files('lib/httpcomponents-client/httpcore-4.3.2.jar')

compile 'org.apache.httpcomponents:httpcomponents-core:4.3.2'

Gradle应该从Maven Central中选择这些(因为repositories { }块在结尾处声明mavenCentral()。)

您可以在Maven Central上搜索每个依赖项。

答案 2 :(得分:0)

将以下内容添加到build.gradle的末尾,以在编译中包含您的依赖项:

dependencies {
    compile 'org.apache.httpcomponents:httpclient:4.3.3'
    compile 'org.apache.httpcomponents:httpcore:4.3.2'
    // etc
}

要构建包含所有依赖项的类的“胖jar”,而是添加:

configurations {
    external
    compile.extendsFrom external
}

dependencies {
    external 'org.apache.httpcomponents:httpclient:4.3.3'
    external 'org.apache.httpcomponents:httpcore:4.3.2'
    // etc
}

jar {
    from { configurations.external.collect { it.isDirectory() ? it : zipTree(it) } }
}

但要注意,由于FML中存在错误,使用org.apache JAR的mod仍然无效:https://github.com/MinecraftForge/FML/issues/424