【问题标题】:How to get maven dependency sources and unpack them to a specified directory?如何获取maven依赖源并将它们解压到指定目录?
【发布时间】:2013-01-01 22:05:24
【问题描述】:

虽然我结合了 maven 和 vim ,但我找不到将我的项目依赖的所有源下载到指定目录并将它们解包在一起的方法。

这样我就可以轻松生成tags

有人知道怎么做吗?

【问题讨论】:

  • 也许this answer 可以帮助下载源代码。源将放置在默认的 maven 存储库 (~/.m2/repository/) 中。

标签: java maven vim ctags


【解决方案1】:

您可以使用 maven-eclipse-plugin 插件下载源代码,并为您提供可用源 jar 的列表(您的某些依赖项可能没有可用源)。

依赖插件也可以下载源码,但是获取需要的jar列表比较难。

你可以试试这样的:

dir=target/sources
mkdir -p $dir
mvn eclipse:eclipse -DdownloadSources
sed -rn '/sourcepath/{s/.*sourcepath="M2_REPO.([^"]*).*/\1/;p}' .classpath | \
  (cd $dir && xargs -i jar xf ~/.m2/repository/{})

这运行mvn eclipse:eclipse -DdownloadSources,它将下载源代码,并将.classpath 文件写入本地目录。此文件包含源 jar 的路径。有点像这样:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
  <classpathentry kind="src" path="src/main/java" including="**/*.java"/>
  <classpathentry kind="output" path="target/classes"/>
  <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
  <classpathentry kind="var" path="M2_REPO/net/sourceforge/findbugs/jsr305/1.3.7/jsr305-1.3.7.jar"/>
  <classpathentry kind="var" path="M2_REPO/net/jcip/jcip-annotations/1.0/jcip-annotations-1.0.jar" sourcepath="M2_REPO/net/jcip/jcip-annotations/1.0/jcip-annotations-1.0-sources.jar"/>
</classpath>

在我的示例中,您可以看到有 JCIP 注释 jar 的源,但没有 FindBugs JSR305 jar。

sed 命令提取源 jar 的路径(相对于您的 maven 本地存储库)。然后 xargs 命令将每个源 jar 解压到 $dir

eclipse 插件创建文件.classpath.project 以及一个目录.settings - 如果您从不使用Eclipse,可以删除这些文件。

【讨论】:

  • 但我使用的是 maven+vim,没有 ide。
  • 我明白这一点。我给出的答案不需要 Eclipse - maven-eclipse-plugin 只是一个 maven 插件,它写出一些 Eclipse 可以读取的文件。请给出我尝试过的命令 - 您不需要 Eclipse 来执行此操作。
  • 太棒了,正是我想要的,我会在命令的末尾添加 ctags -R --languages=java . 以便代码导航可以使用 ctrl + ]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多