3

ローカルでのデバッグとクラスターへのデプロイの両方が可能な Apache Spark アプリケーションを構築しています。これを行うには、spark-core (Java/scala ライブラリ) への依存関係を定義して、次の要件を満たす必要があります。

コンパイルに含まれる (コンパイルが失敗する) 実行とテストに含まれる (ローカル デバッグと単体テスト用) アセンブリに含まれない (提供されたスパーク コアを使用してクラスターにデプロイする場合、これにより jar サイズが 70M 減少します。 maven-assembly を使用して解決できないいくつかの jar の問題があるため、包括的な jar を生成するための maven-shade プラグイン)

残念ながら、カスタム スコープは maven でネイティブにサポートされていないようです。いくつかのプラグインを使用して有効にする方法はありますか?

4

3 に答える 3

1

Maven ビルドでまさにそれを行います。Spark アセンブリがジョブ アセンブリに含まれないようにします。maven-shadeプラグイン構成に除外ルールを追加します。

<configuration>
    <shadedArtifactAttached>true</shadedArtifactAttached>
    <shadedClassifierName>jar-with-dependencies</shadedClassifierName>
        <artifactSet>
            <excludes>
                <exclude>org.apache.spark:spark-assembly</exclude>
            </excludes>
        </artifactSet>
...
</configuration>
于 2014-07-15T10:24:09.877 に答える
0

依存関係にはスコープ属性 (提供) を使用できます。

これはコンパイルによく似ていますが、実行時にJDKまたはコンテナが依存関係を提供することを期待していることを示しています。たとえば、Java Enterprise Edition 用の Web アプリケーションを構築する場合、サーブレット API および関連する Java EE API への依存関係を提供範囲に設定します。これは、Web コンテナーがこれらのクラスを提供するためです。このスコープは、コンパイルおよびテスト クラスパスでのみ使用でき、推移的ではありません。

参照: http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope

例えば:

<dependency>
  <groupId>group-a</groupId>
  <artifactId>artifact-b</artifactId>
  <version>1.0</version>
  <type>bar</type>
  <scope>provided</scope>
</dependency>
于 2014-07-15T19:25:04.447 に答える