Удаление просмотров плагинов (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']
}