ClassLoaderがワイルドカードパターンを使用していることを認識しているすべてのxmlファイルを検出したいと思います。これを行う方法はありますか?
5 に答える
SpringApplicationContext
はこれを簡単に行うことができます。
ApplicationContext context = new ClassPathXmlApplicationContext("applicationConext.xml");
Resource[] xmlResources = context.getResources("classpath:/**/*.xml");
ResourcePatternResolver#getResourcesまたはApplicationContextを参照してください。
List<URL> resources = CPScanner.scanResources(new PackageNameFilter("net.sf.corn.cps.sample"), new ResourceNameFilter("A*.xml"));
スニペットをpom.xmlに入れます
<dependency>
<groupId>net.sf.corn</groupId>
<artifactId>corn-cps</artifactId>
<version>1.0.1</version>
</dependency>
少しコツが必要ですが、関連するブログ エントリを次に示します。最初に jar の URL を把握し、次に jar を開いてその内容をスキャンします。「/META-INF/MANIFEST.MF」を探すことで、すべての jar の URL を見つけることができると思います。ディレクトリは別の問題です。
JARファイルは単なるZIPファイルですよね?
したがって、 http://java.sun.com/javase/6/docs/api/java/util/zip/ZipInputStream.htmlを使用してjarファイルを反復できると思います
私は次のようなことを考えています:
ZipSearcher searcher = new ZipSearcher(new ZipInputStream(new FileInputStream("my.jar")));
List xmlFilenames = searcher.search(new RegexFilenameFilter(".xml$"));
乾杯。キース。
ええと、それはJava内からではなく、
jar -tvf jarname | grep xml$
jar内のすべてのXMLが表示されます。