2015-07-21 2 views
2

Моя цель - иметь общий класс, который другие файлы сборки могут видеть в градиенте. Я создал папку с именем buildSrc, и она находится в моем корневом каталоге моего проекта Android. Содержание выглядеть следующим образом:buildSrc папка gradle не компилируется

class CountryFlavors { 

    def Closure getFlavor() { 
     return callback; 
    } 

Closure callback ={ 

    mock { 
     applicationId "ca.mysite.mock" 
    } 
    prod { 
     applicationId "ca.mysite.prod" 

    } 
} 

} 

Из документации он утверждает, что класс положить в папку buildSrc будет автоматически положить в тот же путь к классам, как мой сценарий сборки для андроида. Но вместо того, что происходит, класс не может быть найден. Я попытался ссылаться на класс в файле build.gradle на уровне приложения, но он не может найти класс. Вот как я называю класс CountryFlavors:

new CountryFlavors().getFlavor() 

компилятор комментирует, что этот класс не найден. Файл класса находится в buildSrc, и я назвал его «build.gradle». Я закрыл корневую папку на фотографии по соображениям собственности. Что мне не хватает? enter image description here

моя конечная цель состоит в том, чтобы иметь класс, определенный извне, который может вернуть мне закрытие, которое я могу использовать в моем скрипте сборки. @Opal

ответ

2

Примерить положить ваш класс CountryFlavor в:

buildSrc/src/main/groovy/CountryFlavor.groovy 

https://docs.gradle.org/current/userguide/custom_tasks.html

Чтобы ответить на вопрос, который я создал простой проект. Это ее упрощенная структура (я вырезать из .gradle, Gradle обертки и т.д.):

C:. 
| build.gradle 
| settings.gradle 
|    
+---buildSrc 
| |    
| \---src 
|  \---main 
|   \---groovy 
|     CountryFlavors.groovy 

build.gradle просто:

task myTask << { 
    println new CountryFlavors().getFlavor() 
} 

я вложил в getFlavor() метод:

println "This is my callback" 

Выход:

gradle -q myTask 

This is my callback 
[email protected] 
+1

Этого недостаточно. 'package' также должен быть определен, и такой класс ** должен быть ** импортирован в начале сценария градации. – Opal

Смежные вопросы