猿问

Java 包的 Maven 依赖关系

我有一个具有标准 Maven 层次结构的 Java 项目:


src

├── main

│   ├── java

│   │   └──com

│   │      └──foo

│   │         ├──bar

│   │         │  └──baz

│   │         └──qux

│   └── resources

└── test

如何获取包使用的依赖项列表com.foo.bar.baz?


森林海
浏览 155回答 1
1回答

慕慕森

我能够使用jdeps完成这项工作。用法非常简单:jdeps <options> <classes...>其中<classes>可以是 .class 文件、目录、JAR 文件或完全限定类名的路径名。我发现一些对我的案例有用的选项:-verbose:class:默认打印类级别的依赖关系,不包括同一包内的依赖关系。-classpath <path>:指定在哪里查找类文件。-package <pkgname>:查找与给定包名称匹配的依赖项(可以多次给出)-regex <regex>:查找与给定模式匹配的依赖项-filter <regex>:过滤与给定模式匹配的依赖项。如果多次给出,将使用最后一个。-filter:package:过滤同一个包内的依赖关系(默认)-filter:archive:过滤同一档案内的依赖关系-filter:none: 没有-filter:package和-filter:archive过滤。通过 -filter 选项指定的过滤仍然适用。-include <regex>:将分析限制为匹配模式的类。此选项过滤要分析的类的列表。-recursive:递归遍历所有依赖关系。包的用法示例com.abc.xyz.ui:jdeps.exe -filter:archive -classpath <project_classpath> com\abc\xyz\ui\<project_classpath>项目的类路径在哪里。输出:com.abc.xyz.ui (ui)   -> com.itextpdf.text                                  itextpdf-5.5.12.jar   -> org.apache.commons.io                              commons-io-2.6.jar   -> org.apache.commons.lang3.time                      commons-lang3-3.8.1.jar   -> org.apache.commons.text                            commons-text-1.6.jar   -> org.controlsfx.control                             controlsfx-8.40.15.jar   -> java.io   -> java.lang   -> java.net   -> java.util我使用-filter ^java\..*选项排除 Java 运行时类:jdeps.exe -filter:archive -filter ^java\..* -classpath <project_classpath> com\abc\xyz\ui\输出:com.abc.xyz.ui (ui)   -> com.itextpdf.text                                  itextpdf-5.5.12.jar   -> org.apache.commons.io                              commons-io-2.6.jar   -> org.apache.commons.lang3.time                      commons-lang3-3.8.1.jar   -> org.apache.commons.text                            commons-text-1.6.jar   -> org.controlsfx.control                             controlsfx-8.40.15.jar
随时随地看视频慕课网APP

相关分类

Java
我要回答