0

内部使用のために Grails 2.2.3 プラグインを開発しています。プラグインでは、すべてのアプリで使用するセキュリティ設定を構成したいと考えています。Spring Security 構成、Spring Security LDAP 構成、およびカスタム UserDetails クラスと UserDetailsContextMapper クラス。

私はそれをすべて処理しましたが、プラグインで依存関係を正しく機能させることができないという問題があります。プラグインを使用するアプリがプラグインの依存関係を宣言している場合は問題なく動作しspring-security-coreますspring-security-ldapが、アプリはこの依存関係を宣言する必要はありません - プラグインがそれを処理する必要があります。

では、このプラグインをインストールしてspring-security-coreプラグspring-security-ldapインを正しく使用するにはどうすればよいでしょうか? プラグインの BuildConfig.groovy ファイルは次のとおりです。

    plugins {
        compile ":spring-security-core:1.2.7.3"
        compile ":spring-security-ldap:1.0.6"
        //Putting this in the app USING the plugin makes it work fine.
    }
4

1 に答える 1

2

pluginsブロックは正しいです。zip からインストールした後に機能しない場合は、以前の作業が残っている可能性があります。

物事を一か所に保つために、私は取り除くのが好きです

grails.project.class.dir = "target/classes"
grails.project.test.class.dir = "target/test-classes"
grails.project.test.reports.dir = "target/test-reports" 

そしてそれらを

grails.project.work.dir = 'target'

したがって、すべてがtargetフォルダーの下にあります。状況がおかしくなったら、実行rm -rf targetして完全な再解決と再構築を強制します。

次に、インライン プラグイン (推移的な deps については良くありません。現在、POM ファイルからその情報を読み取っており、プラグインを適切にパッケージ化しない限り利用できないためです) または zip を使用するのではなく、リリース プラグインのmaven-installスクリプトを使用します。

これをセクションに追加しpluginsます (古いバージョンを削除します):

build ':release:2.2.1', ':rest-client-builder:1.0.3', {
   export = false
}

実行grails compileして解決すると、maven-installスクリプトが使用可能になります。これにより、プラグインがパッケージ化され、フォルダー内の適切な場所にコピーされ$HOME/.m2/repositoryます。次に、アプリケーションの BuildConfig.groovymavenLocal()のブロックを追加またはコメント解除すると、メイン リポジトリでリリースされたかのように、プラグインの依存関係をアプリケーションに追加できます。repositories

plugins {
   compile ':my-cool-security-plugin:0.1'
}

grails maven-installプラグインに変更を加えた場合は定期的に再実行し、ターゲット ディレクトリを削除してアプリを強制的に再インストールします。

于 2013-07-29T18:03:28.667 に答える