在我们将遗留项目迁移到Maven时,我们面临以下问题。
我们有一个核心项目说,xyz和子项目p1,p2。要将子项目添加到核心项目中,我们只需将子项目的jar放入核心项目中。现在当这个核心项目启动时,它会通过检查核心项目目录WEB-INF / lib中所有jar的MANIFEST文件来查找是否有任何子项目。
现在在Maven项目结构中,没有lib目录,那么我如何获得核心项目所使用的所有jar的列表(带有它们的路径)?
感谢任何帮助。
答案 0 :(得分:1)
查看每个项目的pom.xml
。
Maven(其中一个)的美丽,每个依赖都列在那里,所以你不需要在不同的目录项目中打猎。
现在,如果您需要查找下载的实际文件,则应该检入maven home
文件夹(MAVEN_HOME或M2_HOME)。
答案 1 :(得分:1)
Maven依赖项插件显示项目的所有依赖项,甚至是传递项。请尝试:
$ mvn dependency:tree
如果你需要在运行时找出依赖关系,那么应该可以检查类路径(当你的项目由Maven exec启动时,Maven会为你设置)。对于没有自定义类加载器的Java SE应用程序,以下应该可以工作:
ClassLoader cl = ClassLoader.getSystemClassLoader();
URL[] urls = ((URLClassLoader) cl).getURLs();
for (URL url : urls) {
System.out.println(url.getFile());
}
答案 2 :(得分:0)
您可以使用jHades查找重叠的jar:
<dependency>
<groupId>org.jhades</groupId>
<artifactId>jhades</artifactId>
<version>1.0.4</version>
</dependency>
new JHades()
.printClassLoaders()
.printClasspath()
.overlappingJarsReport()
.multipleClassVersionsReport()
.findClassByName("org.apache.bval.jsr303.ApacheValidationProvider")
.findClassByName("javax.validation.spi.ValidationProvider");