2015-11-23 2 views
1

У меня есть проект мультипроекта (projectA) с проектами subprojectsB и projectC. У каждого из подпроектов есть ресурсы, которые я хотел бы добавить в zip. Ресурсы для projectB должны быть в папке projectB в zip.Плагин распространения Gradle: добавьте файлы из подпроектов в отдельные папки

Я использую плагин распространения для создания zip. Этот код работает, но я бы использовал код, который будет работать независимо от количества и имен подпроектов.

distributions { 
    release { 
     baseName 'release' 
     contents { 
      into('projectB') { 
       from 'projectB/src/main/resources/' 
      } 
      into('projectC') { 
       from 'projectC/src/main/resources/' 
      } 
     } 
    } 
} 

Я попытался следующие:

distributions { 
    release { 
     baseName 'release' 
     contents { 
      subprojects.each { 
       p -> into(p.name + '-resources') { 
         from p.projectDir + '/src/main/resources/config' 
        } 
      } 
     } 
    } 
} 

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

Любые предложения, как это сделать? не

ответ

2

Не знаю, почему, но это работает следующим образом:

apply plugin: 'distribution' 

distributions { 
    release { 
    baseName 'release' 
    contents { 
     subprojects.each { p -> 
     into("${p.name}-resources") { 
      from("${p.projectDir}/src/main/resources/config") 
     } 
     } 
    } 
    } 
} 

Хорошо, понял. Эта линия вызывает проблемы:

from(p.projectDir + "/src/main/resources/config") 

Вы не можете добавлять File к String. Так как будет делать работу:

from(p.projectDir.toString() + "/src/main/resources/config") 
from("${p.projectDir}/src/main/resources/config") 

Демо можно найти here.

+0

Вы пишете, что линия вызывает проблемы, но затем также пишет, что оба будут выполнять эту работу? Вы имели в виду, чтобы изменить первую строку на что-то еще? – npeder

+0

@npeder, ты абсолютно прав. Исправленный. – Opal

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