从我最初的研究中我发现我可以通过以下方法在groovy中加载类路径资源:
所以,我想就什么是处理类路径资源的最“常规”方式征求意见?
此外,我在jar中的'xsd'目录下有一个'* .xsd'文件列表。无论如何我可以做类似的事情,但是有类路径资源吗?
List<StreamSource> schemaDefinitions = new File('src/main/resources/xsd')
.listFiles( { dir, file -> file ==~ /.*\.xsd/ } as FilenameFilter )
.collect { new StreamSource(it) }
// Looking for something like this:
List<StreamSource> schemaDefinitions = this.getClass().getResource('src/main/resources/xsd')
.listFiles( { dir, file -> file ==~ /.*\.xsd/ } as FilenameFilter )
.collect { new StreamSource(it) }
谢谢!
答案 0 :(得分:1)
依次回答;
1:
String xsd = this.getClass().getResource('/xsd/file.xsd').text
而且2:
答案 1 :(得分:1)
感谢@tim_yates的快速回复。
由于我写的图书馆非常薄,我现在犹豫是否要引入像反思一样的依赖,所以现在我选择了这个解决方案:
private List<StreamSource> retrieveSchemaDefinitionsFromClasspath(String classpathXsdDir) {
ClasspathResourceManager resourceManager = new ClasspathResourceManager()
List<String> schemaDefinitionFileNames = resourceManager.getReader(classpathXsdDir).text.split()
schemaDefinitionFileNames.findAll { it ==~ /.*\.xsd$/ }.collect {
new StreamSource(resourceManager.getReader("$classpathXsdDir/$it"))
}
}
我将很快看一下反思,看看我如何应用相同的反思。与此同时,你能否评论我的方法与使用反思?
谢谢!