2015-11-20 5 views
1

Привет Я с 2 проектов с файлами, как показано ниже:Gradle нескольких проектов строить с чтения файла

project1 
    \- build.gradle 

project2 
    \- build.gradle 
    \- build.properties 

project1: build.gradle

apply from: '/home/project2/build.gradle  
test/test2/build.gradle' 

task test1 { 
    println "Running task test 1" 
} 

test1.dependsOn test2 

project2: build.gradle

task test2 { 
    println "Running task test 2" 
    Properties props = new Properties() 
    props.load(new FileInputStream("build.properties")) 
} 

Когда я выполняю т st1 задача из project1, я получаю следующее сообщение об ошибке:

Запуск теста задачи 2

FAILURE: Build failed with an exception.

  • Where: Script '/home/project2/build.gradle' line: 4

  • What went wrong: A problem occurred evaluating script. build.properties (No such file or directory)

  • Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 5.779 secs

Как Gradle работает с относительным путем, он пытается найти build.properties файл в каталоге project1 который на самом деле присутствует в каталоге project2. Я также могу перенести этот файл в каталог project1, но это то, чего я не хочу делать.

Я также могу использовать абсолютный путь в build.gradle, но это только решение?

Я хочу запустить project2:test2 Задача от project1:test1 Задача без особого изменения в проекте2: build.gradle, поскольку я имею в виду несколько файлов в этом файле.

+0

Вы случайно используете эти build.properties для настройки своей сборки? Если это так, вы можете вместо этого использовать gradle.properties - https://docs.gradle.org/current/userguide/build_environment.html –

+0

Thanks Eric, Но нам нужно build.properties, а не файл gradle.properties (Требование) , –

ответ

0

Вы можете попробовать не применять полный сценарий сборки, как и вы сейчас, но сделать задачу из project1 в зависимости от задачи из проекта2, как:

test1.dependsOn ':project2:test2' 

Но для этого вам нужно иметь все этот проект является подпроектом одного и того же корневого проекта и имеет файл settings.gradle в корневом проекте, определяющий этот подпроект. Вы можете прочитать об этом в official documentation.

В противном случае вам нужно переместить файл свойств в каталог project1 или использовать относительный или абсолютный путь, так как применение просто расширяет ваш текущий скрипт сборки с некоторым дополнительным поведением, но не делает его таким, поскольку это отдельный проект.

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