2014-01-09 4 views
0

Я пытаюсь сделать отдельный артефакт в моем проекте для создания файла jar с помощью классов контракта ContentProvider. Для того, чтобы построить эту банку я использую следующую задачу:Конфигурация Gradle для контракта ContentProvider

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

contractsJar.dependsOn 'compileReleaseJava' 

но эта задачу сборку баночку с базовым путем в корневой системе (для Mac OS X оно /Users/myuser...). Итак, что мне делать, чтобы создать «правильную» банку с базовым путем в корне проекта?

ответ

0

Существовали две проблемы:

  1. android.applicationVariants.release не существует в самом начале, поэтому мы должны использовать DomainObjectCollection.all()
  2. into работает в каком-то странным образом - если мы используем его, то баночка будет иметь корневую систему в качестве базовой папки

так что результат конфигурация:

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" 
    } 
    } 
} 
Смежные вопросы