2017-10-19 3 views
-1

私はクラスに注釈@SecurityDomain("cjm")を持っています。アプリケーションを配備する環境によっては、異なるセキュリティドメインを設定する必要があります。だから私の考えはフィルタリングを使用することでした:@SecurityDomain("${project.name}")Javaアノテーションの値をmavenプロパティに置き換えるにはどうすればいいですか?

しかし、私がSOで見つけた例を使用しても、何も機能しません。私は単にプロパティを置き換えることはできません

私はこれのための素晴らしい解決策を見つけていない奇妙に思えます。おそらく私は間違った用語で検索しています。あるいは、奇妙なことに、それは(まだ)不可能です。

mavenテンプレートプラグインは十分ではなく、フィルタを含んでいないので、多くの重複したクラスコンパイルエラーがあります。

このプロジェクトは、keycloak samlセキュリティアダプタを使用してRed Hat EAP 7上で実行されるJava EEプロジェクトです。 @SecurityDomainは、セキュリティコンテキストをWebコンテキストからejbコンテキストに伝播するために必須です。これは@RolesAllowedを使用する場合に必要です。デフォルトのシナリオで行われているように、セキュリティコンテキストを自動的に伝播するために、キークローックチームに強化要求を記録しました。

+1

Spring設定の使用を検討しましたか?ここにドキュメントがあります: [Spring外部化された設定のドキュメント](https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html) –

+1

あなたは話しているようです奇妙なアイディアとして聞こえるソースコードを「フィルタリングする」ことについてそのセキュリティドメインをプロパティファイルに入れても構いませんか?しかし、プラグインがありますhttps://stackoverflow.com/questions/4106171/filtering-source-code-in-maven –

+0

@Value($ {securityDomain})でプロパティを使用してプライベートString securityDomainを使用してこの値を@SecurityDomain(securityDomain) –

答えて

-1

どのMavenビルドステージでも環境変数を設定することができます。たとえば、プロファイルによって異なります。そして、それらをSystem.environment()でランタイムステージで消費します。

最新のDockerコンテナの配送方法に関しては、これも好ましい方法であると思われます。

+0

真ですが、mavenはソースコード上でデフォルトでそれを許可していません。しかし、それは完全にリソースファイルに適用されます。ここでのトリックは、コンパイルプロセスの前に起こる必要があります。 –

+0

なぜコンパイル前ですか? 「アプリケーションを配備する環境に応じて、異なるセキュリティドメインを設定する必要があります」と定義します。展開段階ですが、私の意見ではコンパイルできません。 – AlexGera

+0

私はあなたの視点を理解しています。しかし、Mavenが.javaファイルを.classファイルにコンパイルしているときは、そのプロパティをすでに設定しておく必要があります。そうでない場合、Mavenは.classファイルのプロパティを設定できません。 .javaファイルで実行する必要があります。だから、それはコンパイルプロセス(またはメイヴンがそれを呼び出すのが好きなフェーズ)の前にのみ起こることができます。 –

関連する問題