0

我正在尝试在我的项目中制作单独的工件以使用 ContentProvider 合同类构建 jar 文件。要构建这个 jar,我使用下一个任务:

task contractsJar(type: Jar) {
  from android.applicationVariants.release.javaCompile.destinationDir
  includes "contract classes filter"
  into "$buildDir/libs"
}

contractsJar.dependsOn 'compileReleaseJava'

但是此任务在系统根目录中使用基本路径构建 jar(对于 Mac OS X 是/Users/myuser...)。那么我应该怎么做才能在项目根目录中使用基本路径制作“正确”的 jar?

4

1 回答 1

0

有两个问题:

  1. android.applicationVariants.release 一开始是不存在的,所以我们应该使用DomainObjectCollection.all()
  2. into以某种奇怪的方式工作 - 如果我们使用它,那么 jar 将具有系统根目录作为基本文件夹

所以结果配置:

task contractsJar(type: Jar, dependsOn: 'compileReleaseJava')

android.applicationVariants.all() { variant ->
  if (variant.name == "release") {
    contractsJar {
      from variant.javaCompile.destinationDir
      include "filter pattern (ANT style)"
      baseName="contracts"
    }
  }
}
于 2014-01-10T15:10:58.943 回答