这一定必须相当简单,但我似乎无法做到这一点。
我有一个gradle任务,它从一些外部类创建一个jar,我的代码严重依赖于这些类。当我尝试构建时,我从compileJava中获取错误,在我的类中为导入行说package <com.etc...> does not exist
。
这是相关代码
project.ext.set("myVersion", "v1")
dependencies {
// tried this, but it gives me a circular dependency error for my compile & zip tasks
compile files('${buildDir}/dist/my-jar-${project.myVersion}.jar') {
builtBy 'zipExternalClasses'
}
// tried either of these, but still get package does not exist
compile files('${buildDir}/dist/my-jar-${project.myVersion}.jar')
runtime files('${buildDir}/dist/my-jar-${project.myVersion}.jar')
}
// The dependent task compileExternalClasses compiles the classes from a source folder
// I can see that the jar is successfully created in 'build/dist'
task zipExternalClasses(dependsOn: 'compileExternalClasses', type: Jar) {
// code for zipping compiled external classes
}
答案 0 :(得分:0)
这就是我要做的事情,包括当地的罐子。
我将它们放在app / libs文件夹中。
然后在build.gradle(Module:app)中看起来像这样:
dependencies {
compile project(':protobuf')
compile files('libs/android-support-v13.jar')
}
其中“android-support-v13.jar”是我以前放在libs文件夹中的jar文件。
答案 1 :(得分:0)
我认为问题可能是您在文件路径中使用单引号。 Groovy中的单引号字符串不进行字符串插值,因此您的路径只是${buildDir}/dist/my-jar-${project.myVersion}.jar
本身,这显然不正确。
试试下面的双引号:
dependencies {
compile files("${buildDir}/dist/my-jar-${project.myVersion}.jar")
}
在评估String时,变量'buildDir'和'project.myVersion'将替换为实际值。
查看有关String and GString的Groovy文档,我相信它会有用。