Java 如何创建一个胖罐子?
有了SpringBoot,您就有了Java 如何创建一个胖罐子?,java,maven,intellij-idea,jar,spark-java,Java,Maven,Intellij Idea,Jar,Spark Java,有了SpringBoot,您就有了@SpringBootApplication注释,但是与neat Java Spark框架的等价物是什么呢 IntelliJ创建了一个Maven项目,我添加了spark依赖项,但是运行安装目标时,我得到了一个没有清单的5 KB jar。不是一个可执行的jar 迄今为止创建的pom.xml如下所示: 4.0.0 斯巴克德莫 斯巴克德莫 1 罐子 斯巴克德莫 http://maven.apache.org UTF-8 朱尼特 朱尼特 3.8.1 测试 com.sp
@SpringBootApplication
注释,但是与neat Java Spark框架的等价物是什么呢
IntelliJ创建了一个Maven项目,我添加了spark依赖项,但是运行安装目标时,我得到了一个没有清单的5 KB jar。不是一个可执行的jar
迄今为止创建的pom.xml
如下所示:
4.0.0
斯巴克德莫
斯巴克德莫
1
罐子
斯巴克德莫
http://maven.apache.org
UTF-8
朱尼特
朱尼特
3.8.1
测试
com.sparkjava
火花芯
2.5.4
org.apache.maven.plugins
maven编译器插件
3.3
${java.version}
${java.version}
真的
真的
如果您有任何建议,我将不胜感激……谢谢 看起来您正在寻找maven汇编插件 将其添加到插件部分并运行
mvn包
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>assemble-all</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
org.apache.maven.plugins
maven汇编插件
3.0.0
带有依赖项的jar
集合所有
包裹
单一的
这里需要的是一个可执行的jar,它不仅包含您的类,还包含来自所有依赖项的类。
为此,您可以使用
请参见下面的示例代码
<project>
[...]
<build>
[...]
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>org.sample.App</mainClass> // specify your main class here
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
[...]
</project>
[...]
[...]
maven汇编插件
3.0.0
带有依赖项的jar
org.sample.App//在此处指定主类
组装
包裹
单一的
[...]
然后,运行
mvn package
,可执行jar应该位于文件夹target
(名称类似于ProjectName-1.0-SNAPSHOT-jar-with-dependencies.jar
)。我对spark不太熟悉,但既然你有maven,而且这是一个pom,这听起来像是.maven汇编插件的工作,但是,如果您有源代码,您可以始终将其作为maven任务执行,maven将处理依赖项。这很好!非常感谢。我只是使用了错误的Maven Intellij设置吗?我以为Maven会处理这些东西,所以我一定是使用太基本的Maven设置创建了项目?默认情况下,Maven在构建和打包应用程序时不会打包任何依赖的JAR。Maven的设计更多是为了J2EE目的。如果您的应用程序包含一个主类,并且您希望执行它(您生成的jar),那么您将需要所有依赖项也出现在您的类路径上(具有主类的应用程序)。这不是maven提供的默认行为。因此,您必须明确地告诉maven构建一个可执行的jar,其中所有依赖项也将与您的应用程序jar一起打包。既然我的解决方案有效,介意接受它作为一个答案并对其进行投票吗?如果您解释一下我是如何做到这一点的,我很乐意接受它作为一个答案。我没有看到任何明显的“这就是答案”类型的东西可以点击。谢谢。@Morkus,我的答案旁边会有一个记号。为了接受正确答案,你只需点击勾号。那时它会变成绿色的。