Intellij Java 2016和Maven:如何在JAR中嵌入依赖项?

我正在使用Intellij Java 2016.2.2和Maven来创建一个非常简单的Java控制台应用程序。

我想添加一个外部库,所以我在Maven中添加我的依赖项,如下所示:

 jline jline 2.12  

它在IDE中运行时工作正常,但在外部控制台中没有(我有以下错误: java.lang.NoClassDefFoundError )。

我检查过,由于某种原因,外部JAR没有添加到我刚刚生成的JAR中。 我还在“文件 – >项目结构”中尝试了很多东西,但仍然没有工作……

我只想用我的依赖项构建我的JAR,所以我可以使用以下命令在控制台中运行我的应用程序:

 java -jar myproject.jar 

我怎样才能做到这一点? 谢谢你的帮助!

我终于设法使用Intellij Java生成这个JAR,这是我的工作方式:

  • 在pom.xml文件中添加依赖项
  • 转到文件 – >项目结构 – >工件 – >新建 – > JAR – >从具有依赖关系的模块
  • 选择Main类,然后单击“确定”
  • 在您的项目中,在src / main中,创建“resources”文件夹
  • 在此“resources”文件夹中移动“META-INF”(其中包含MANIFEST.MF)文件夹
  • 转到Build – > build artifacts来构建JAR

编辑

更好(也更简单)的方法是在pom.xml文件中添加以下行:

    maven-assembly-plugin    your.MainClass    jar-with-dependencies     make-assembly package  single       

然后使用“clean”和“package”maven命令。

上面的最后3个步骤(关于MANIFEST.MF)似乎仍然是强制性的。

好的,所以你基本上想要创建一个“胖jar”(有时称为程序集),它包含所有自己的依赖项(通常,依赖项是外部的)。

你需要使用Maven插件。 下面是一个示例程序集插件配置jar-with-dependencies :

  ...  ...   maven-assembly-plugin 2.6   jar-with-dependencies   ...  

然后,简单地运行

 mvn package