首页 > 解决方案 > 如何在使用 Maven 创建 Jar 时使用依赖项在本地运行代码并排除它们

问题描述

我是新手,所以听起来很傻。我正在本地机器上编写 Scala Spark 代码,然后将其上传到集群中执行(测试环境)。我的问题是我不想在创建 Jar 时包含 Spark 依赖项,因为它们存在于集群中。但是要在本地运行代码,我需要它们。到目前为止,我已尝试提供所提供的范围

      <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_${scala.compat.version}</artifactId>
            <version>2.4.0</version>
            <scope>provided</scope>
        </dependency>

这允许我从 Jar 中排除依赖项,但是当我在本地运行它时,我需要删除范围。我查看了其他范围选项,但找不到适合我的选项。我错过了什么?

标签: javascalamavenapache-spark

解决方案


您需要使用不同的Maven 配置文件

这样的事情会帮助你:

<profiles>
    <profile>
        <id>test</id>
        …
        <dependencies>
            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-core_${scala.compat.version}</artifactId>
                <version>2.4.0</version>
                <scope>provided</scope>
            </dependency>
        </dependencies>
        …
    </profile>
    <profile>
        <id>debug</id>
        …
        <dependencies>
            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-core_${scala.compat.version}</artifactId>
                <version>2.4.0</version>
            </dependency>
        </dependencies>
        …
    </profile>
</profiles>

然后,您可以test在远程运行配置文件并debug在本地运行配置文件。


推荐阅读