Maven 不会将依赖项下载到文件夹

问题描述 投票:0回答:1

我正在尝试让 mvn 将 Delta Lake 下载到某个目录,以便我可以手动将其挂载到 Spark 中。这样 Spark 应用程序就不必出于安全目的向 mvn 发出 Web 请求,理想情况下可以防止它与 WWW 一起通信。

有人可以帮忙吗?我的假设是我不能直接从 mvn 下载 Jar,因为我会丢失链中的所有依赖项。

我正在使用

mvn org.apache.maven.plugins:maven-dependency-plugin:3.2.0:get \ -DremoteRepositories=https://repo.maven.apache.org/maven2/ \ -Dartifact=io.delta:delta-spark_2.13:3.1.0 \ -Ddest=~/_mvn_local           

这会报告“构建成功”。计划是通过环境变量将该目录中的所有 jar 挂载到 Spark。但没有输出到目标目录。我想避免不必要地定义 POM。确切的输出是:

data-lake % mvn org.apache.maven.plugins:maven-dependency-plugin:3.2.0:get \
    -DremoteRepositories=https://repo.maven.apache.org/maven2/ \
    -Dartifact=io.delta:delta-spark_2.13:3.1.0 \
    -Ddest=~/_build           

[INFO] Scanning for projects...
[INFO] 
[INFO] ------------------< org.apache.maven:standalone-pom >-------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] --------------------------------[ pom ]---------------------------------
[INFO] 
[INFO] --- dependency:3.2.0:get (default-cli) @ standalone-pom ---
[INFO] Resolving io.delta:delta-spark_2.13:jar:3.1.0 with transitive dependencies
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.548 s
[INFO] Finished at: 2024-03-01T14:37:59Z
[INFO] ------------------------------------------------------------------------```
java scala maven apache-spark
1个回答
0
投票

这是一个可以实现我想要的功能的脚本:

#!/bin/bash

download_dependency() {
    rm -rf infra-data-lake/spark/_build
    mvn_command="mvn -f <your pom> dependency:copy-dependencies -DoutputDirectory=../spark/_build/spark_jars -Dscope=provided"

    # Execute Maven command
    if ! $mvn_command; then
        echo "❌ Error occurred while downloading Spark dependencies."
        exit 1
    else
        echo "✅ Spark dependencies download completed successfully."
    fi
}

download_dependency 

如果你想下载所有依赖项,你必须定义一个 POM 文件,通过

-f
标志将 Maven 指向 pom,并让它下载所有带有依赖项的传递依赖项:复制依赖项声明和输出。
Dscope=provided
似乎也是获得一切的必要条件。

© www.soinside.com 2019 - 2024. All rights reserved.