欢迎光临
我们一直在努力

如何获取maven工程所有依赖项

使用 Maven 的 dependency:tree 命令可以查看项目的依赖树,并将输出重定向到一个文件中。要去掉前面的符号 |、+- 等,可以借助文本处理工具来清理输出文件中的内容。
以下是如何生成依赖树并去掉前面的符号的一个示例:
运行 Maven 命令:在项目的根目录中运行 mvn dependency:tree 命令,将输出重定向到一个文件中。例如:

mvn dependency:tree > dependencies.txt

如果需要合并多个工程或子工程所有依赖项,将多个 dependencies.txt 文件合并、去重并转换成 Pom 的 XML 格式涉及到几个步骤:

sed 's/^[ \t]*[-+|\\ ]*//' dependencies.txt > cleaned_dependencies.txt

首先,可以使用 cat 命令合并多个文件。假设有 dependencies1.txt、dependencies2.txt 等文件,可以使用:

cat dependencies1.txt dependencies2.txt > combined_dependencies.txt

接着,使用 sort 和 uniq 命令去重合并后的内容:

sort combined_dependencies.txt | uniq > unique_dependencies.txt

如果 unique_dependencies 文件 是从windows系统生成,每一行结尾会有符号^M,即:Carriage Return(回车)字符的显示形式,这种字符可能会导致在 Unix/Linux 系统中显示不正常,在处理文本文件时,最好将其转换为 Unix 格式,以便更好地与 Unix 环境兼容。可以使用 dos2unix 命令来转换文件格式,例如:

dos2unix your_file.txt

转换为 Pom 的 XML 格式更复杂一些,因为需要根据 Maven 的依赖格式编写。一个简单的脚本如下:

#!/bin/bash

echo "生成 pom.xml,使用的源文件: dependencies.txt"  # 添加了注释来说明使用的源文件

echo "<project xmlns=\"http://maven.apache.org/POM/4.0.0\"" > pom.xml
echo "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" >> pom.xml
echo "xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0" >> pom.xml
echo "http://maven.apache.org/xsd/maven-4.0.0.xsd\">" >> pom.xml
echo "  <modelVersion>4.0.0</modelVersion>" >> pom.xml
echo "  <groupId>com.example</groupId>" >> pom.xml
echo "  <artifactId>example-project</artifactId>" >> pom.xml
echo "  <version>1.0-SNAPSHOT</version>" >> pom.xml
echo "  <dependencies>" >> pom.xml

while IFS= read -r line; do
  IFS=':' read -r groupId artifactId type version scope <<< "$(echo "$line")"
  echo "处理依赖:$groupId:$artifactId:$type:$version:$scope"
  echo "    <dependency>" >> pom.xml
  echo "      <groupId>$groupId</groupId>" >> pom.xml
  echo "      <artifactId>$artifactId</artifactId>" >> pom.xml
  echo "      <version>$version</version>" >> pom.xml
  echo "      <type>$type</type>" >> pom.xml
  echo "      <scope>$scope</scope>" >> pom.xml
  echo "    </dependency>" >> pom.xml
done < cleaned_dependencies.txt

echo "  </dependencies>" >> pom.xml
echo "</project>" >> pom.xml
echo "pom.xml 生成完成。"

注意,这个脚本只是一个基础模板。它读取 unique_dependencies.txt 文件中的每一行,并期望每行至少包含 groupId:artifactId:version 这样的格式。如果 dependencies.txt 文件具有不同的格式,可能需要调整脚本中的 IFS= read -r line 部分以正确解析。

分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址