展開のためのパッケージ化

処理中のパイプラインを HERE platform に展開するには、まず脂肪質の JAR にパッケージ化する必要があります。 ファット JAR の作成方法については、ビルドツールのドキュメントを参照してください。

このセクションでは、 SBT と Maven の両方でファット JAR を作成するための一般的な手順について説明します。 HERE platform の Maven 原型を使用してパイプラインを構築している場合は、この節をスキップし て代わりに HERE Workspace for Java and Scala Developers のガイドを参照できます。

注 : データ プロセッシング ライブラリでは、各モジュール /JAR reference.conf にファイルが 1 つずつ含まれていることが必要です。これらのファイルはすべて個別にロードされます。 複数の JAR ファイルを 1 つの JAR ファイル に結合する場合は、すべて reference.conf のファイルを 1 つの JAR ファイルに結合する必要もあります。 この設定を行わないと、既定の設定が読み込まれず、プロジェクトの作業が停止します。

Maven を使用してアプリケーションをパッケージ化する場合は、 Apache Maven Shade プラグイン for Resource Transformers を使用して、クラスパス上のすべてのreference.confファイルを 1 つのファイルにマージできます。

Maven プラグイン設定 :

<plugin>
 <groupId>org.apache.maven.plugins</groupId>
 <artifactId>maven-shade-plugin</artifactId>
 <version>1.5</version>
 <executions>
  <execution>
   <phase>package</phase>
   <goals>
    <goal>shade</goal>
   </goals>
   <configuration>
    <shadedArtifactAttached>true</shadedArtifactAttached>
    <shadedClassifierName>allinone</shadedClassifierName>
    <artifactSet>
     <includes>
      <include>*:*</include>
     </includes>
    </artifactSet>
    <transformers>
      <transformer
       implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
       <resource>reference.conf</resource>
      </transformer>
      <transformer
       implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
       <manifestEntries>
        <Main-Class>project.Main</Main-Class>
       </manifestEntries>
      </transformer>
    </transformers>
   </configuration>
  </execution>
 </executions>
</plugin>

同様に、 SBT では次のプラグイン設定も提供されます。

// sbt plugin
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "<latest-version>")

// sbt project
project.in(file("examples-project"))
  .settings(
    mainClass in assembly := Some("project.Main"),
    defaultMergeSettings
  )

lazy val defaultMergeSettings = {
  assemblyMergeStrategy in assembly := {
      case PathList("com", "esotericsoftware", xs@_*) => MergeStrategy.first
      case PathList("org", "objenesis", xs@_*) => MergeStrategy.first
      case x if Assembly.isConfigFile(x) => MergeStrategy.concat
      case x =>
        val oldStrategy = (assemblyMergeStrategy in assembly).value
        oldStrategy(x)
    }
}

」に一致する結果は 件です

    」に一致する結果はありません