2013-03-13 6 views
2

У меня есть несколько задач по градиенту войны в моем файле сборки, и я хотел бы изменить webAppDirName на военную задачу. Я попытался это:gradle custom war task webAppDirName

task myWarTask(type: War) { 
    ext.webAppDirName = 'src/anotherfolder/webapp' // also tried just webAppDirName 
    version "" 
    destinationDir = file("$buildDir/libs") 
    baseName = 'myWarName' 
    classpath = configurations.myWarConfiguration 
} 

Но это все еще тянет в содержании src/main/webapp вместо src/anotherfolder/webapp

Могу ли я настроить webAppDirName на на войне файл основе, как это?

ответ

6

Существует только один webAppDirName собственности на проект, и плагин War автоматически добавляет соответствующий from каждой War задачи. Таким образом, основная проблема заключается в том, как отменить это from. Я думаю, что следующее должен работать:

apply plugin: "war" 

webAppDirName = "non/existing/dir" 

task myWarTask(type: War) { 
    from "src/anotherfolder/webapp" 
    ... 
} 

Альтернативой является использование только типа задачи War, но не плагин войны. Затем вам придется сконфигурировать еще несколько свойств задачи и потерять несколько функций, в основном связанных с , с предоставлением конфигураций и публикацией войны. Конечно, вы можете это сделать с явной конфигурацией (при необходимости). Если вас интересуют подробности, посмотрите на source code для плагина War.

PS: webAppDirName не является дополнительной собственностью (ext.), но свойство конвенции добавлено плагином War. Дополнительные свойства предназначены только для использования ad-hoc в сценариях сборки. Вы должны использовать ext. при написании дополнительной собственности, но опустите ее при чтении свойства.

+0

Спасибо, что очищает его. –

+0

Теперь, когда я думаю об этом, это может быть чище, просто не иметь директорию 'src/main/webapp'. –

+0

В итоге я просто исключил 'src/main/webapp', так как он включал файлы для одной из других военных задач. Возможно, было бы проще разбить эту войну на отдельный проект. –

0
task myWarTask(type: War) { 
    from 'src/anotherfolder/webapp' 
    version "" 
    destinationDir = file("$buildDir/libs") 
    baseName = 'myWarName' 
    classpath = configurations.myWarConfiguration 
} 
+0

Это относится к файлам из src/anotherfolder/webapp, но он по-прежнему включает файлы из src/main/webapp. –

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