2013-11-22 3 views
11

Я занимаюсь разработкой нескольких модулей проекта с Gradle/IntelliJ-идее, а вот структура моего проекта дома:Gradle: общая зависимость ресурсов для нескольких проектов Java

project/ 
    sub-project-1 
    /main/resources 
    sub-project-2 
    /main/resources 
    data 
    /main/resources 
    /test/resources 

Как вы можете видеть, я имеют несколько подпроектов (все java), как я могу заставить их зависеть от некоторых общих ресурсов (проект «данные», который не содержит кода, а только ресурсов), а также их собственные отдельные ресурсы?

Также лучше всего, чтобы intellij-идея могла автоматически забрать эти зависимости с помощью JetGradle (JetGradle отлично справляется с зависимостями проекта java проекта по умолчанию в каждом субпроекте).

Большое спасибо!

ответ

5

Одно из решений заключается в применении плагин Java также проекта data, а затем использовать регулярные зависимости проекта (например, dependencies { runtime project(":data") }). Однако для этого потребуется немного усилий, чтобы предотвратить доставку тестовых ресурсов.

Другим решением является не создание data проекта Gradle, а буквально его каталоги ресурсов в двух других проектах (sourceSets.main.resources.srcDir "../date/main/resources"; sourceSets.test.resources.srcDir "../data/test/resources").

+0

Второе решение звучит лучше. Благодаря! –

4

Хорошо, я понял. На самом деле это довольно просто. Просто обработайте папку «data» в качестве другого проекта и добавьте объявления зависимостей в подпроекты, сделайте трюк. Например:

dependencies { 
    compile project (':data') 
    testCompile project (':data') 
} 
+2

Привет Эрик, я хочу сделать почти то же самое. вы действительно создали проект данных: проект градиента? если да, не могли бы вы поделиться своим build.gradle, пожалуйста? – Dave00Galloway

2

Подход, который я взял, чтобы использовать ссылку на проект

sourceSets { 
    main { 
     resources { 
      srcDirs += [ 
       project(':data').sourceSets.main.resources 
      ] 
     } 
    } 
} 
+0

Чувак, ты такая проклятая жизнь. Я пытался часами, чтобы получить файл для загрузки через два модуля, не дублируя его, но независимо от того, где я его помещал, что я назвал, или как я загрузил его из класса, всякий раз, когда выполнение переключилось с одного модуля на другой модуль градации, я всегда получил 'FileNotFoundException'. Это решило проблему! – anon58192932

+1

рад, что это помогло кому-то :) –

+0

Я получаю переполнение стека при попытке этого. Отказы между в org.gradle.api.internal.file.DefaultSourceDirectorySet.getSrcDirTrees (DefaultSourceDirectorySet.java:128) в org.gradle.api.internal.file.DefaultSourceDirectorySet.doGetSrcDirTrees (DefaultSourceDirectorySet.java:141) –

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