2016-02-28 2 views
0

Я это просто build.gradleGradle не удалось найти метод на корень проекта, но я использую подпроектов

subprojects { 
    test {} 
} 

project(':module1') { 
    apply plugin: 'java' 
} 

и Gradle жалуется, что не может найти метод test() на корневом проекте. Но почему он пытается найти его в корневом проекте? Я прочитал here, что подпроекты не включают корневой проект. И если я поместил println name в подпроекты, я также не вижу на выходе корневого проекта.

ответ

1

@highstakes является правильным. Но при условии, что у вас есть только один подпроект (module1), это всего лишь вопрос времени. Сначала вам нужно применить плагин java, прежде чем вы сможете настроить задачи этого плагина. Если вы создадите файл и измените заказ, вы получите:

project(':module1') { 
    apply plugin: 'java' 
} 

subprojects { 
    test {} 
} 

Это будет работать до тех пор, пока у вас есть только один подпроект.

Сообщение об ошибке, которое вы получаете, состоит в том, что град интерпретирует test {} как вызов функции, передающий пустое закрытие, и ищет определение этой тестовой функции в корневом проекте. Поскольку эта функция не была добавлена ​​(плагином java) в этом месте, вы получаете сообщения об ошибках.

+0

Это помогло, спасибо! Это сообщение об ошибке смутило меня, я бы ожидал, что «не смог найти метод test() в проекте module1», а не «на корневом проекте». – Yaroslav

1
  1. Вы используете только плагин java для одного подпроекта, чтобы другие не имели доступ к тестовому закрытию.

  2. Вы можете попробовать явно применять плагин на данном подпроекта, как это:

    проекта (': module1') {проекта -> project.apply плагина: 'Java' }

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