我在我的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
答案 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