Удаление просмотров плагинов (gsp) при построении войны

Мы используем различные плагины в нашем приложении Grails (такие как логирование, Spring Security Core, UI, ACL и многие другие). Теперь эти плагины поставляются с gsps по умолчанию (в папке views каждого плагина).

Я хочу построить WAR без учета представлений любого плагина. Поэтому, когда война строится прямо сейчас, она создает папку плагинов, которая содержит папку представлений, которая поставляется по умолчанию с плагином, эти представления создают много уязвимостей, и поэтому я хочу исключить представления плагинов.

Я пытаюсь это прямо сейчас в BuildConfig.groovy, как показано ниже:

grails.project.dependency.resolution = {
grails.war.resources = { stagingDir ->
   println "Customized delete started..."
   delete{fileset dir: "${stagingDir}/WEB-INF/plugins/logging-0.1/grails-app/views/"}
   delete{fileset dir: "${stagingDir}/WEB-INF/plugins/spring-security-ui-0.1.2/grails-app/views/"}
    }
   }

Но проблема в том, что код пытается удалить представления, когда они еще не созданы процессом военного строительства. Следовательно, я получаю файл not found для этих плагинов.

Где я должен написать код для удаления видов плагинов, чтобы они уже были созданы и доступны для удаления при построении WAR, или как не включать представления плагинов в WAR?

Заранее спасибо.. Приянк

1 ответ

Решение

Я ответил на этот вопрос в списке рассылки Grails. http://grails.1312388.n4.nabble.com/deleting-plugins-views-gsp-when-building-the-war-td4560517.html (Ответ еще не обнаружен в наброске)

Вы можете удалить / добавить файлы из / в файл war в событии eventCreateWarStart, указанном в файле scripts/_Events.groovy.

Это может сработать:

имя файла: scripts/_Events.groovy

eventCreateWarStart = { warName, stagingDir ->
   Ant.delete(dir: "${stagingDir}/WEB-INF/plugins/logging-0.1/grails-app/views")
   Ant.delete(dir: "${stagingDir}/WEB-INF/classes", includes:"gsp_logging*.*")
   Ant.delete(dir: "${stagingDir}/WEB-INF/plugins/spring-security-ui-0.1.2/grails-app/views")
   Ant.delete(dir: "${stagingDir}/WEB-INF/classes", includes:"gsp_springSecurityUi*.*")
}

Я не уверен, что вы могли бы также без проблем удалить классы плагинов Controller. Мы использовали классы Filter для "отключения" контроллеров, предоставляемых плагинами.

В качестве дополнительного примечания вы можете отключить плагины "только для разработки" в производственной среде с помощью еще не документированной функции "grails.plugins.excludes":

Пример: в Config.groovy:

import grails.util.Environment

if(Environment.current == Environment.PRODUCTION) {
    grails.plugin.excludes = ['somePluginName']
}
Другие вопросы по тегам