如何在Gradle中包含本地jar依赖项?

时间:2015-03-04 15:28:59

标签: java gradle build.gradle

这一定必须相当简单,但我似乎无法做到这一点。

我有一个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
}

2 个答案:

答案 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文档,我相信它会有用。