gpt4 book ai didi

java - 如何从具有多个模块的项目中获取正确的 list ? [Java]

转载 作者:行者123 更新时间:2023-11-28 21:56:14 25 4
gpt4 key购买 nike

我想从我的 Jar 文件的 list 中读取以从那里获取 SVNVersion 信息并将其显示在 UI 中。我从事一个多模块项目,其中包括一个客户端、一个在 tomcat 上运行的服务器、客户端的一些模块及其依赖项。

我编写代码来访问当前线程的 list 并获取它的属性。

Manifest mf = new Manifest();

mf.read(Thread.currentThread().getContextClassLoader().getResourceAsStream("META-INF/MANIFEST.MF"));

Attributes atts = mf.getMainAttributes();
System.out.println(atts.values());
System.out.println("Version: " + atts.getClass());
System.out.println("Revision: " + atts.get("SCM-Revision"));
String scm = (String) atts.get("SCM-Revision");
String revision = (String) atts.get("Revision-Number");
return revision + scm;
}

唯一的问题是它返回 Null 值,因为它从本地存储库中获取依赖项的 list ,其中没有我需要的信息。

我的问题有解决方案吗?以某种方式从项目中指定一个模块,以便它知道获取 IT 的 jar list 而不是依赖项中的 list ?谢谢!

最佳答案

(我删除了我之前的答案,因为它有错误且不准确)

这是我过去必须从类路径中的任何类获取正确 list 的过程:它包括通过特定 URL 获取它:

private static URL getManifestUrlForClass(Class<?> cl)
throws MalformedURLException
{
URL url=cl.getResource(cl.getSimpleName() + ".class");
String s=url.toString();
return new URL(s.substring(0, s.length() - (cl.getName() + ".class").length()) + "META-INF/MANIFEST.MF");

要在您的代码中使用它,只需替换第一行:

mf.read(getManifestUrlForClass(MyClass.class).openStream());

关于java - 如何从具有多个模块的项目中获取正确的 list ? [Java],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44069790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com