最初のアプリケーションをプラグインにするパターンを使用して成功しています。最初のユース ケースではアプリケーションとして実行され、2 番目のユース ケースではプラグインとして含まれます。
これを行う場合 (grails アプリケーションは同時にアプリケーションであると同時にプラグインでもあります)、プラグインをアプリケーションとして実行するときに、プラグインを起動から除外する必要があります。そうしないと、アプリケーションはそれをアプリケーションとして、およびプラグインとして 2 回開始します。「grails.plugin.excludes」構成設定 (ここで説明) により、これが発生しなくなります。
この特別なユース ケースについては、この jira の問題で説明しています
: http://jira.grails.org/browse/GRAILS-6751
これは、多くの場合、私たちにとってキラー機能であることが判明しました。他のユースケースでアプリケーションをプラグインとして再利用し、この機能を使用していくつかの個別のアプリケーションを 1 つに組み合わせることができました。もちろん、いくつかの制限 (名前の競合など) はありますが、それは私たちにとって問題ではありませんでした。
最も一般的な使用例は、完全なアプリケーションを再利用し、別のアプリケーションのビューを単にオーバーライドすることです。既存のアプリケーションは同時にアプリケーションとプラグインになることができるため、「共通部分」を別のプラグインに抽出するための余分な作業はありません。
既存の Grails アプリケーションをプラグインにするには、MyAppNameGrailsPlugin.groovy ファイルをルート ディレクトリに追加し、この設定値を grails-app/conf/Config.groovy に追加するだけです: grails.plugin.excludes = ['myAppName'] (小文字で始まるキャメルケースのアプリケーション名)
メーリング リストのディスカッション:
http://grails.1312388.n4.nabble.com/Dynamic-applications-extending-an-existing-application-with-Grails-tp4634094p4634202.html
Burt の詳細なブログ投稿:
http://burtbeckwith.com/blog/?p=1973
David Dawson のプレゼンテーション:
http://skillsmatter.com/podcast/home/large-scale-grails-using-plugins-how-to-modularise-an-application/jd-8012