現在のMavenビルドの「メイン」applicationContext-a.xmlを使用してApplicationContextを作成する必要があります。他の1つは、別のMavenビルドからのクラスを配線し、MavenDependencyに含まれるjarに事前設定されています。
ここにアイデアがあります:
ApplicationContext context = new ClassPathXmlApplicationContext( new String[] {
"classpath*:applicationContext-*.xml"});
これは、同じプロジェクト内にあるため、クラスパスからapplicationContext-a.xmlをロードする必要があります。これは機能します。
次に、applicationContext-b.xmlをdependency-jarからロードする必要があります。 これは機能しません。
ご了承ください
"classpath*:applicationContext-*.xml"
直接クラスパス内のXMLにのみ一致し、jar内には一致しません。
私が見つけたもの:
ApplicationContext context = new ClassPathXmlApplicationContext( new String[] {
"classpath*:applicationContext-*.xml", "classpath*:applicationContext-b.xml"});
これは機能しますが、jar内のxmlのファイル名を明示的に伝えることができる場合に限ります:applicationContext-b.xml
統合テストで機能するには、これも必要です。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"**/applicationContext*.xml"})
public class TestClass { ... }
最良のアイデアはカスタムローダーかもしれませんか?このパターンを機能させる方法が必要です...
少し前に解決策がありましたが、それは逆に機能します。それは、jarからapplicationContext.xmlを取得するだけです。クラスパス内に別のファイルがある場合は、このファイルでのみ一致します。