【发布时间】:2018-11-24 10:35:46
【问题描述】:
打包Akka 应用程序。
您好,我正在尝试将我的应用程序打包成一个可执行文件Jar。下面是我的Pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.personalProjects</groupId>
<artifactId>MyAkkaProject</artifactId>
<version>1.0</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<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>akka.Main</Main-Class>
</manifestEntries>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-stream_2.12</artifactId>
<version>2.5.18</version>
</dependency>
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-stream-kafka_2.12</artifactId>
<version>1.0-M1</version>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.1</version>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver</artifactId>
<version>3.4.3</version>
</dependency>
</dependencies>
</project>
我似乎无法让Jar 工作,它指出缺少akka.streams 配置。
我浏览了官方文档here 但它似乎不起作用。
如果我将所有 Jar 复制到输出目录,一切正常,但问题似乎出在我尝试创建包含所有依赖项的 big fat jar 时。
我的MANIFEST.INF 如下:
Manifest-Version: 1.0
Main-Class: MyAkkaProject.App
其中App 是带有psvm 的类,MyAkkaProject` 是包名
【问题讨论】:
-
确保您需要在清单条目中设置
。除此之外,我会尝试使用更新版本的 maven-shade-plugin(尽管我不希望这能解决您的问题)。执行 mvn clean package后的输出是什么? /target 目录的内容是什么? -
@foivaras 我已经用详细信息编辑了我的问题
-
这很奇怪......我在 akka 项目中有一个非常相似的 pom 配置,并且 fat jar 工作正常。在目标目录上,它只生成我们在屏幕截图中看到的这两个目录?没有罐子?
-
@foivaras jar 在 out 目录中创建,
./out.MyAkkaProject/artifacts/myAkkaProject_jars/MyAkkaProjext.jar。您能否在git上发布一个示例项目,以便我快速了解您是如何获得那个大肥罐的。 -
github.com/halx4/activator-akka-stream-java8 (master 分支) 1) 克隆 2) 执行
mvn clean package目标目录将是:| | akka-stream-java8_2.11-1.0-allinone.jar | akka-stream-java8_2.11-1.0.jar | +---classes +---generated-sources +---maven-archiver \---maven-status *-allinone.jar(它的大小约为15MB)是我们想要的胖jar。
标签: java akka maven-shade-plugin