我正在尝试升级我们的Spring版本,并使用Spring IO Platform BOM来做到这一点,但是我们的一些类已经丢失(移至其他构件中),或者不再依赖于我要引入的某些东西。尝试找出它们最初属于哪个软件包(一个示例是CSVStrategy)。其中一些依赖项(例如WhitespaceTokenizer
)具有可以提供的十几个工件名称,为了找到正确的升级路径,我需要弄清楚它的来源。
最佳答案
一种可能的方法是获取资源(类)位置。如果该类来自jar文件,则至少会获得jar名称。由此您应该能够识别Maven工件。
someClass.getProtectionDomain().getCodeSource().getLocation().toURI();
或者使用ResourceLoader和记录器,您可以在classpath / servlet-path上打印所有类的列表。
@Autowired
ResourceLoader resourceLoader;
public void printResourceLocations() {
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(resourceLoader);
Resource[] resources = resolver.getResources("classpath*:com/**/*.class"));
for (Resource resource : resources) {
log.info(resource.getURI());
// Not sure if that works, probably getFile() is ok?
}
}