Java 仅从pom文件检索依赖项
我正在做一些静态挖掘,我想有一个涉及库的列表 有没有办法通过编程查找pom.xml文件使用的依赖项? 我不能使用.m2 repo或类似的东西,因为代码没有编译 (换句话说,我想重新创建POM.xml文件的“Efective POM”选项卡,如Eclipse所示) 请注意,读取当前项目的pom文件(test boottstrap)会在请求时提供一组依赖项,但不会与外部pom文件一起。 代码:Java 仅从pom文件检索依赖项,java,maven,Java,Maven,我正在做一些静态挖掘,我想有一个涉及库的列表 有没有办法通过编程查找pom.xml文件使用的依赖项? 我不能使用.m2 repo或类似的东西,因为代码没有编译 (换句话说,我想重新创建POM.xml文件的“Efective POM”选项卡,如Eclipse所示) 请注意,读取当前项目的pom文件(test boottstrap)会在请求时提供一组依赖项,但不会与外部pom文件一起。 代码: [...] Model model = mavenReader.read(new FileReader(p
[...]
Model model = mavenReader.read(new FileReader(pomFile));
model.setPomFile(pomFile);
proj= new MavenProject(model);
proj.setRemoteArtifactRepositories(
Arrays.asList((ArtifactRepository) new MavenArtifactRepository(
"maven-central",
"http://repo1.maven.org/maven2/",
new DefaultRepositoryLayout(),
new ArtifactRepositoryPolicy(),
new ArtifactRepositoryPolicy())));
List<Dependency> dependencies = proj.getDependencies();
for (Dependency dependency : dependencies) {
System.out.println(dependency);
}
使用XX建议,Runtime.getRuntime().exec(“cmd/cmvn依赖项:树”)代码>
输出为(其他之间):
这正是我想要的。但关键是我不想知道我的项目的依赖树是什么样子的。我想调查其他项目
现在,对于pomFile=new File(“[externalPath].pom.xml”)
它找不到任何依赖项。(该文件存在并包含正确的pom信息)。您可以启动单独运行的进程。此命令返回带有“有效pom”的xml。稍后,您可以解析该XML以获得依赖关系
如果您对可传递依赖感兴趣,您可以以类似的方式使用mvn dependency:tree
。您是否正在寻找类似Maven工件解析器的东西?我正在寻找可传递的依赖项。使用MavenProject
我得到了直接依赖项的列表,但我想知道哪些依赖项使用这些依赖项,等等。解析器似乎需要一个存储库。。不过我想再深入了解一下,谢谢。试试MavenProject.getArtifacts()
或者MavenProject.getArtifacts()
MavenProject.getArtifacts()
是空的。“有效的POM”类比可能是错误的。。。我道歉。它包含依赖项的依赖项吗?不。但是mvn依赖项:tree
does:)有没有一种方法可以通过编程获得结果?我可能有多个pom.xml,并且它可能没有被任何mvn文件包围(我不知道它是否会影响执行/结果),您可以从代码启动一个进程并解释其输出。或者你也可以查看插件,我找到了我需要的东西,非常感谢。只需要几个参数就可以优化外部文件上的执行。谢谢
Dependency {groupId=com.github.javaparser, artifactId=javaparser-core, version=3.5.4, type=jar}
Dependency {groupId=com.jcabi, artifactId=jcabi-aether, version=0.7.19, type=jar}
Dependency {groupId=org.apache.maven, artifactId=maven-core, version=3.0.3, type=jar}
Dependency {groupId=org.apache.maven.plugins, artifactId=maven-dependency-plugin, version=3.0.2, type=jar}
Dependency {groupId=org.apache.maven.plugin-tools, artifactId=maven-plugin-annotations, version=3.5, type=jar}
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ ca.umontreal.iro.logiannot ---
[INFO] ca.umontreal.iro.logiannot:ca.umontreal.iro.logiannot:jar:0.0.1-SNAPSHOT
[INFO] +- com.github.javaparser:javaparser-core:jar:3.5.4:compile
[INFO] +- com.jcabi:jcabi-aether:jar:0.7.19:compile
[INFO] | +- com.jcabi:jcabi-aspects:jar:0.7.19:compile
[INFO] | +- com.jcabi:jcabi-log:jar:0.7.19:compile
[INFO] | | +- log4j:log4j:jar:1.2.17:compile
[INFO] | | \- org.slf4j:slf4j-api:jar:1.7.5:compile
[INFO] | +- org.aspectj:aspectjrt:jar:1.7.2:compile
[INFO] | +- javax.validation:validation-api:jar:1.1.0.Final:compile
[INFO] | +- org.kuali.maven.wagons:maven-s3-wagon:jar:1.1.20:compile
[INFO] | | +- org.kuali.common:kuali-s3:jar:1.0.1:compile
[INFO] | | +- com.amazonaws:aws-java-sdk:jar:1.4.2:compile
[INFO] | | | +- org.apache.httpcomponents:httpclient:jar:4.1:compile
[INFO] | | | | \- org.apache.httpcomponents:httpcore:jar:4.1:compile
[INFO] | | | +- org.codehaus.jackson:jackson-core-asl:jar:1.8.9:compile
[INFO] | | | \- org.codehaus.jackson:jackson-mapper-asl:jar:1.8.9:compile
[INFO] | | +- org.springframework:spring-core:jar:3.1.2.RELEASE:compile
[INFO] | | +- org.kuali.common:kuali-threads:jar:1.0.9:compile
[INFO] | | \- org.slf4j:jcl-over-slf4j:jar:1.6.4:compile
[INFO] | +- org.sonatype.aether:aether-api:jar:1.13.1:compile
[INFO] | +- org.sonatype.aether:aether-spi:jar:1.13.1:compile
[INFO] | +- org.sonatype.aether:aether-util:jar:1.13.1:compile
[INFO] | +- org.sonatype.aether:aether-connector-file:jar:1.13.1:compile
[INFO] | +- org.sonatype.aether:aether-connector-asynchttpclient:jar:1.13.1:compile
[INFO] | | \- com.ning:async-http-client:jar:1.6.5:compile
[INFO] | | \- org.jboss.netty:netty:jar:3.2.5.Final:compile
[INFO] | +- org.sonatype.aether:aether-connector-wagon:jar:1.13.1:compile
[INFO] | +- org.sonatype.aether:aether-impl:jar:1.13.1:compile
[INFO] | +- org.apache.maven:maven-aether-provider:jar:3.0.5:compile
[INFO] | +- org.apache.maven.wagon:wagon-provider-api:jar:2.4:compile
[INFO] | \- org.apache.commons:commons-lang3:jar:3.1:compile
[INFO] +- org.apache.maven:maven-core:jar:3.0.3:compile
[INFO] | +- org.apache.maven:maven-model:jar:3.0.3:compile
[INFO] | +- org.apache.maven:maven-settings:jar:3.0.3:compile
[INFO] | +- org.apache.maven:maven-settings-builder:jar:3.0.3:compile
[INFO] | +- org.apache.maven:maven-repository-metadata:jar:3.0.3:compile
[INFO] | +- org.apache.maven:maven-artifact:jar:3.0.3:compile
[INFO] | +- org.apache.maven:maven-plugin-api:jar:3.0.3:compile
[INFO] | +- org.apache.maven:maven-model-builder:jar:3.0.3:compile
[INFO] | +- org.sonatype.sisu:sisu-inject-plexus:jar:2.1.1:compile
[INFO] | | \- org.sonatype.sisu:sisu-inject-bean:jar:2.1.1:compile
[INFO] | | \- org.sonatype.sisu:sisu-guice:jar:no_aop:2.9.4:compile
[INFO] | +- org.codehaus.plexus:plexus-interpolation:jar:1.14:compile
[INFO] | +- org.codehaus.plexus:plexus-utils:jar:2.0.6:compile
[INFO] | +- org.codehaus.plexus:plexus-classworlds:jar:2.4:compile
[INFO] | +- org.codehaus.plexus:plexus-component-annotations:jar:1.5.5:compile
[INFO] | \- org.sonatype.plexus:plexus-sec-dispatcher:jar:1.3:compile
[INFO] | \- org.sonatype.plexus:plexus-cipher:jar:1.4:compile
[INFO] +- org.apache.maven.plugins:maven-dependency-plugin:jar:3.0.2:compile
[INFO] | +- org.apache.maven.reporting:maven-reporting-api:jar:3.0:compile
[INFO] | +- org.apache.maven.reporting:maven-reporting-impl:jar:2.3:compile
[INFO] | | +- org.apache.maven.doxia:doxia-core:jar:1.2:compile
[INFO] | | | \- xerces:xercesImpl:jar:2.9.1:compile
[INFO] | | | \- xml-apis:xml-apis:jar:1.3.04:compile
[INFO] | | \- commons-validator:commons-validator:jar:1.3.1:compile
[INFO] | | +- commons-beanutils:commons-beanutils:jar:1.7.0:compile
[INFO] | | +- commons-digester:commons-digester:jar:1.6:compile
[INFO] | | \- commons-logging:commons-logging:jar:1.0.4:compile
[INFO] | +- commons-io:commons-io:jar:2.5:compile
[INFO] | +- org.apache.maven.doxia:doxia-sink-api:jar:1.4:compile
[INFO] | | \- org.apache.maven.doxia:doxia-logging-api:jar:1.4:compile
[INFO] | +- org.apache.maven.doxia:doxia-site-renderer:jar:1.4:compile
[INFO] | | +- org.apache.maven.doxia:doxia-decoration-model:jar:1.4:compile
[INFO] | | +- org.apache.maven.doxia:doxia-module-xhtml:jar:1.4:compile
[INFO] | | +- org.apache.maven.doxia:doxia-module-fml:jar:1.4:compile
[INFO] | | +- org.codehaus.plexus:plexus-i18n:jar:1.0-beta-7:compile
[INFO] | | +- org.codehaus.plexus:plexus-container-default:jar:1.0-alpha-30:compile
[INFO] | | | \- junit:junit:jar:3.8.1:compile
[INFO] | | +- org.codehaus.plexus:plexus-velocity:jar:1.1.7:compile
[INFO] | | +- org.apache.velocity:velocity:jar:1.5:compile
[INFO] | | | \- oro:oro:jar:2.0.8:compile
[INFO] | | \- org.apache.velocity:velocity-tools:jar:2.0:compile
[INFO] | | +- commons-chain:commons-chain:jar:1.1:compile
[INFO] | | +- dom4j:dom4j:jar:1.1:compile
[INFO] | | +- sslext:sslext:jar:1.2-0:compile
[INFO] | | +- org.apache.struts:struts-core:jar:1.3.8:compile
[INFO] | | | \- antlr:antlr:jar:2.7.2:compile
[INFO] | | +- org.apache.struts:struts-taglib:jar:1.3.8:compile
[INFO] | | \- org.apache.struts:struts-tiles:jar:1.3.8:compile
[INFO] | +- org.codehaus.plexus:plexus-archiver:jar:3.4:compile
[INFO] | | +- org.apache.commons:commons-compress:jar:1.11:compile
[INFO] | | +- org.iq80.snappy:snappy:jar:0.4:compile
[INFO] | | \- org.tukaani:xz:jar:1.5:runtime
[INFO] | +- org.apache.maven.shared:file-management:jar:1.2.1:compile
[INFO] | | \- org.apache.maven.shared:maven-shared-io:jar:1.1:compile
[INFO] | +- org.codehaus.plexus:plexus-io:jar:2.4:compile
[INFO] | +- org.apache.maven.shared:maven-dependency-analyzer:jar:1.7:compile
[INFO] | | \- org.ow2.asm:asm:jar:5.0.2:compile
[INFO] | +- org.apache.maven.shared:maven-dependency-tree:jar:3.0.1:compile
[INFO] | | \- org.eclipse.aether:aether-util:jar:0.9.0.M2:compile
[INFO] | +- org.apache.maven.shared:maven-common-artifact-filters:jar:3.0.1:compile
[INFO] | +- org.apache.maven.shared:maven-artifact-transfer:jar:0.9.1:compile
[INFO] | | \- commons-codec:commons-codec:jar:1.6:compile
[INFO] | +- org.apache.maven.shared:maven-shared-utils:jar:3.2.0:compile
[INFO] | +- commons-lang:commons-lang:jar:2.6:compile
[INFO] | +- commons-collections:commons-collections:jar:3.2.2:compile
[INFO] | \- classworlds:classworlds:jar:1.1:compile
[INFO] \- org.apache.maven.plugin-tools:maven-plugin-annotations:jar:3.5:provided