2015-10-21 5 views
1

У меня есть несколько библиотек, которые я использую в нескольких проектах. Мой код в библиотеке совместим с другими версиями библиотеки (более старые и более новые). НО есть изменения в библиотеке, которые не совместимы со всеми версиями сборки.Gradle - зависимость от переопределения (исключить зависимость) из встроенных библиотек

У меня есть старый проект, который я сейчас не хочу обновлять до новейшей версии инструментов для сборки, поэтому для этого одного проекта я бы хотел принудительно переопределить зависимость.

Обычно я исключать зависимости от библиотек, как следующие:

compile ("com.doomonafireball.betterpickers:library:1.6.0") { 
    exclude group: 'com.android.support', module: 'support-v4' 
} 

Как можно исключить зависимость от местного проекта библиотеки? Я попытался

compile project(':dialogs') { 
    exclude group: 'com.afollestad.material-dialogs' 
} 

Но это не компилируется ...

EDIT

Вот мой диалог библиотека:

compile('com.afollestad.material-dialogs:core:[email protected]') { 
    transitive = true; 
} 
compile('com.afollestad.material-dialogs:commons:[email protected]') { 
    transitive = true; 
} 

И вот что я пытался, но это не делает работы:

compile(project(':dialogs')) { 
    exclude group: 'com.afollestad.material-dialogs' 
} 
compile 'com.afollestad:material-dialogs:0.7.8.1' 

Проблема: она компилируется и запускается, но я получаю исключения NoSuchMethod. Когда я просто закомментируйте 0.8.4.2 библиотеки линий и заменить его на 0.7.8.1 линии (все в моей библиотеке) все работает отлично ...

+0

ли вы когда-нибудь решить эту проблему? – user1809913

+0

Нет ... Он не находит методы, если я делаю это так, поэтому я все еще комментирую код вручную ... – prom85

ответ

6

Вероятно, это должно помочь: https://discuss.gradle.org/t/excluding-transitive-dependency-does-not-work-for-project-dependency/8719

Этот является синтаксической проблемой. Закрытие, в котором вы вызываете exclude, интерпретируется как аргумент метода project(), который является неправильным. Должно выглядеть так:

compile(project(':baseproject')) { 
    exclude group: 'com.miglayout' 
} 

Смотрите, что компиляция обертывания проекта с фигурными скобками()

+0

Вы правы, не знали, что я могу использовать этот синтаксис для локальных библиотек. Работает сейчас, большое спасибо – prom85

+0

Я только что редактировал мой вопрос ... У меня все еще есть проблема. Это не работает так, как ожидалось ... Любые другие идеи или подсказки? – prom85

+0

Не могли бы вы предоставить отрывок из журнала? Мне непонятно, кто и когда бросает NoSuchMethod – Sergey

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