0

Spring アプリケーション jar ファイル /w すべての jar 依存関係を通常どおり jar 内にパッケージ化することは可能ですが、リソース フォルダー + spring app-context.xml は jar の外部で定義されていますか? もしそうなら、誰かが私に例を挙げてもらえますか?

可能であればmavenを使用してビルドしたいのですが、mavenはリソースをjarのルートに押し込み、それらを外部で利用/キャプチャしたいので、実際には2つの質問があると思います.

  1. 春に外部ファイルからコンテキスト/プロパティを消費させるにはどうすればよいですか。(ex. 外部 "classpath*:/META-INF/spring/applicationContext.xml")
  2. リソースをメインのjarファイルに押し込むのではなく、mavenパッケージをjarファイルにするにはどうすればよいですか。これは Maven プラグインを介して構成できると思いますが...最初の質問の方が重要だと思いますが、これにはある種のテンプレート ソリューションがあると考えましたが、例を見つけることができませんでした。
4

3 に答える 3

0

最終的に、maven-shade-plugin を使用してこれを機能させ、uber jar のマニフェストを編集することができました。シェードプラグインにちょうどいいxmlの呪文を取得したら、クラスローダーで互いに衝突する同じ名前のハンドラーを持つSpring依存関係のルールを設定する必要があります。また、フォルダー名を含めるようにマニフェスト クラスパス エントリを変更する必要があります。正しく行われた場合、これにより、「uber」jar + リソースが使用され、隣接するフォルダーにきちんと配置されます。それ以外はすべて標準の Maven + 春のものです。

于 2014-05-22T22:05:36.480 に答える
0

春に外部ファイルからコンテキスト/プロパティを消費させるにはどうすればよいですか。

春を使用しますPropertyPlaceholderConfigurer

<bean 
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="ignoreResourceNotFound" value="true"/>
    <property name="locations">
        <list>
            <value>classpath:included.properties</value>
            <value>file:${HOME}/external.properties</value>
        </list>
    </property>
</bean>

locations順番に読み取られ、後のアイテムは前のアイテムのプロパティ値を上書きします。

リソースをメインのjarファイルに押し込むのではなく、mavenパッケージをjarファイルにするにはどうすればよいですか。

上記の最初の回答が役立つ場合、これは必要ありません。

于 2013-05-24T13:27:54.510 に答える
0

私はあなたが何を得ているか知っていると思います。システム固有の構成をパッケージの外に保持しようとしています。

私が過去に行ったことは、applicationContext.xml を jar 内に残すことですが、外部のものへの参照も持っています。このファイルには、システム固有のプロパティが含まれています。私は通常、アプリケーション コンテナー (tomcat)/lib ディレクトリに配置します。

コマンドラインアプリケーションを実行している場合は、ファイルを -classpath 引数として渡すだけでよいと思います。

アーティファクト内の applicationContext.xml の上部に次のような行があります。

<import resource="classpath*:externalized-applicationContext.xml"/>
于 2013-05-24T13:28:02.467 に答える