展開のためのパッケージ化
処理中のパイプラインを 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 では次のプラグイン設定も提供されます。
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "<latest-version>")
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)
}
}