1

grailsアプリケーションではさまざまなプラグインを使用しています(ロギング、Spring Security Core、UI、ACLなど)。現在、これらのプラグインにはデフォルトのgspが付属しています(各プラグインの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/"}
    }
   }

しかし、問題は、ビューが戦争構築プロセスによってまだ作成されていないときに、コードがビューを削除しようとすることです。したがって、これらのプラグインビューでファイルが見つからないというエラーが発生します。

プラグインビューを削除するコードをどこに記述すれば、プラグインビューがすでに作成されており、WARの構築時に削除できるようになりますか、またはプラグインビューをWARに含めないようにするにはどうすればよいですか?

よろしくお願いします。Priyank

4

1 に答える 1

2

Grailsメーリングリストでこの質問に答えました。 http://grails.1312388.n4.nabble.com/deleting-plugins-views-gsp-when-building-the-war-td4560517.html (答えはまだnabbleに表示されていません)

scripts / _Events.groovyファイルで指定されたeventCreateWarStartイベントで、warファイルから/にファイルを削除/追加できます。

これはうまくいくかもしれません:

ファイル名: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*.*")
}

プラグインコントローラークラスも問題なく削除できるかどうかはわかりません。Filterクラスを使用して、プラグインによって提供されるコントローラーを「無効」にしました。

補足として、まだ文書化されていない「grails.plugins.excludes」機能を使用して、本番環境で「開発専用」プラグインを無効にすることができます。

例:Config.groovyの場合:

import grails.util.Environment

if(Environment.current == Environment.PRODUCTION) {
    grails.plugin.excludes = ['somePluginName']
}
于 2012-04-16T07:03:10.273 に答える