3

我是一个超级粉丝

mvn dependency:tree

并希望将外观相似的树打印为纯 ascii 文本作为我的 java 程序的输出。

 com.totsp.gwt:maven-gwt-sample:war:1.0-SNAPSHOT
 +- com.google.gwt:gwt-servlet:jar:2.4.0:compile
 +- com.google.gwt:gwt-user:jar:2.4.0:provided
 |  +- javax.validation:validation-api:jar:1.0.0.GA:provided
 |  \- javax.validation:validation-api:jar:sources:1.0.0.GA:provided
 +- log4j:log4j:jar:1.2.14:compile
 \- junit:junit:jar:4.1:test

我希望实现这一目标的库很容易使用,但我找不到它。

我看到的最接近的替代品是:http ://code.google.com/p/j-text-utils/但它不如 Maven 的好。

我在哪里可以找到一个将树结构打印为文本的库,几乎与 mvn dependency:tree 相同?

4

2 回答 2

2

我不是创建/使用 MOJO 的专家,但是下载并查看maven-dependency-plugin怎么样?

将它作为依赖项添加到您的项目中很简单(我猜您正在通过 Maven 管理它),乍一看,您应该直接调用TreeMojo.execute()或类似的东西。

大致它做这样的事情:

ArtifactFilter artifactFilter = createResolvingArtifactFilter();
rootNode = dependencyTreeBuilder.buildDependencyTree( project,
        localRepository, artifactFactory, artifactMetadataSource,
        artifactFilter, artifactCollector );
String dependencyTreeString = serializeDependencyTree( rootNode );
DependencyUtil.log( dependencyTreeString, getLog() );

那是你要找的吗?

于 2012-06-02T12:18:35.190 回答
1

以防万一有人来这里寻找纯 Java 库解决方案 - 有text-tree

<dependency>
  <groupId>org.barfuin.texttree</groupId>
  <artifactId>text-tree</artifactId>
  <version>2.0.0</version>
</dependency>

你只需让你的树节点实现Node接口,然后你可以

Node tree = ...;   // your tree
TreeOptions options = new TreeOptions();
options.setStyle(new TreeStyle("+- ", "|  ", "\\- "));
String rendered = TextTree.newInstance(options).render(tree);
System.out.println(rendered);

从您的示例中生成树。此代码使用自定义树样式来匹配您的示例,但存在预定义的树样式
完全披露:我是文本树的作者。它是免费和开源的。

于 2020-12-09T08:24:02.347 回答