619

我有一个包含单个模块和一些依赖项的项目。我想在一个单独的目录中创建一个包含已编译模块的 jar。此外,我希望在我的模块旁边显示依赖项。

无论我如何扭曲 IntelliJ 的“构建 jar”过程,我的模块的输出都是空的(除了 META-INF 文件)。

4

22 回答 22

723

这是使用 IntelliJ 10 构建 jar 的方法http://blogs.jetbrains.com/idea/2010/08/quickly-create-jar-artifact/

File-> Project Structure-> Project Settings-> Artifacts-> 点击green plus sign-> Jar->From modules with dependencies...

以上将“骨架”设置为将保存 jar 的位置。要实际构建并保存它,请执行以下操作:

提取到目标Jar

好的

构建 | 构建工件 | 建造

尝试从中提取 .jar 文件

项目名称 | 出| 文物 | 项目名称_jar | 项目名称.jar

于 2011-02-04T18:06:11.893 回答
353

这仍然是 2017 年的一个问题,我希望它会对那里的人有所帮助!我发现了在 IntelliJ 2017.2 下创建工作 jar-s 的 2 种可能性

1. 从 IntelliJ 创建工件:

  • 进入项目结构:

文件菜单

  • 创建一个新的工件:

创建一个新工件

  • 选择主类,并确保更改清单文件夹:

在此处输入图像描述

您必须更改清单目录:

<project folder>\src\main\java 

用“资源”替换“java”

<project folder>\src\main\resources

它应该是这样的:

新清单的正确方法

  • 然后你选择你想要打包在你的 jar 中的依赖项,或者靠近你的 jar 文件

  • 要构建您的工件,请转到构建工件并选择“重建”。它将使用您的 jar 文件及其依赖项创建一个“out”文件夹。

在此处输入图像描述

2.使用maven-assembly-plugin

将构建部分添加到 pom 文件

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <finalName>ServiceCreate</finalName>
                    <appendAssemblyId>false</appendAssemblyId>
                    <archive>
                        <manifest>
                            <mainClass>com.svt.optimoo.App</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
  • 创建一个新的运行/调试配置:

创建一个新的运行/调试配置:

  • 选择应用:

选择应用

  • 填写表格
  • 在构建后添加“assembly:single”maven 目标以最后执行

在此处输入图像描述

最终设置

  • 保存,然后运行

在此处输入图像描述

此过程将在“目标”文件夹下创建 jar 文件

JAR 文件位置

于 2017-07-25T12:41:41.370 回答
149

我最近遇到了这个问题,如果任何先前的解决方案或链接缺少细节,我认为这些步骤很容易遵循。

如何.jar使用 IntelliJ IDEA 14.1.5 创建一个:

  1. 文件 > 全部保存。
  2. 使用 main 方法运行驱动程序或类。
  3. 文件 > 项目结构。
  4. 选择选项卡“工件”。
  5. 单击窗口顶部附近的绿色加号按钮。
  6. 从添加下拉菜单中选择 JAR。选择“从具有依赖关系的模块”
  7. 选择主课。
  8. 单选按钮应选择“提取到目标 JAR”。按确定。
  9. 选中“基于制作”复选框
  10. 按应用和确定。
  11. 从主菜单中,选择构建下拉菜单。
  12. 选择选项构建工件。
于 2015-10-13T20:13:33.523 回答
45

对于那些像我一样从图像中受益的人:

File->Project Structure

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

于 2017-05-08T17:40:33.807 回答
26

下面是 2 个使用 maven 项目的示例,一步一步:

方法一:用maven和pom.xml构建jar

  1. 文件,新建,项目,行家
  2. 创建一个包,在该包内创建一个java程序 在此处输入图像描述
  3. 在 pom.xml 中,添加 maven-jar-plugin。

        <plugin>
            <!-- Build an executable JAR -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.1.0</version>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <classpathPrefix>lib/</classpathPrefix>
                        <mainClass>somePackage.sample</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    

屏幕截图: 在此处输入图像描述 4. 通过单击搜索图标打开 maven 项目框并输入 maven, 在此处输入图像描述

  1. 点击清理,然后点击安装 在此处输入图像描述

  2. 您的 jar 文件将显示在目标文件夹中 在此处输入图像描述

  3. 使用 java -jar 测试你的 jar

在此处输入图像描述

方法2:使用maven构建jar,无需更改pom.xml

  1. 文件,新建,项目,行家
  2. 创建一个包,在该包内创建一个java程序(同上)
  3. File-> Project Structure-> Project Settings-> Artifacts-> 点击green plus sign-> Jar->From modules with dependencies

很重要!

MANIFEST.MF 需要在您的资源文件夹中,而 Main.Class 需要引用 {package}-{class-name-that-c​​ontains-main-class}

在此处输入图像描述 在此处输入图像描述

  1. 然后单击菜单上的构建,构建工件,构建

在此处输入图像描述

  1. 在out文件夹中找到jar

在此处输入图像描述

  1. 运行 :)

在此处输入图像描述

于 2019-01-26T00:28:24.490 回答
7

当我使用这些解决方案时,会出现以下错误:

java -jar xxxxx.jar

没有主要清单属性,在 xxxxx.jar

解决方案是

您必须更改清单目录:

<project folder>\src\main\java 

将java更改为资源

<project folder>\src\main\resources
于 2019-02-20T07:49:01.500 回答
6

可能有点晚了,但我设法以这种方式解决它 - >用winrar打开并删除META-INF文件夹中的ECLIPSEF.RSA和ECLIPSEF.SF,此外放入“Main-class:main_class_name”(没有“.class” ) 在 MANIFEST.MF 中。确保在最后一行之后按两次“Enter”,否则它将不起作用。

于 2015-06-27T16:23:09.663 回答
4

我试图从一个多模块 Kotlin应用程序构建一个 jar,并且遇到了臭名昭著的“无主清单属性”错误。在其中创建清单目录src/main/resources也不起作用。

相反,它在src直接创建它时起作用:src/META-INF/MANIFEST.MF.

在此处输入图像描述

于 2019-04-18T16:55:08.840 回答
3

在此处输入图像描述

正如上面的人所说,但我必须注意一点。您必须选中复选框:

包含在项目构建中

于 2019-06-03T03:19:22.250 回答
2

使用 Maven,您可以使用此插件:

 <build>
    <plugins>

        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>[path you class main]</mainClass>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase> 
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
于 2016-12-21T12:54:54.630 回答
1

理念 8.1.3

Jar 没问题,因为在“输出”目录 (project/out/production//) 中有编译输出

我想,你必须在构建 jar 之前运行“make”

对于依赖项,只需检查“显示库”并选择你想要的。

于 2009-07-04T21:15:17.927 回答
1

这里是IntelliJ IDEA 2018.3 Help的官方回答。我试过了,它奏效了。

从模块构建 JAR 文件;

  1. 在主菜单上,选择 Build | 构建工件。

  2. 从下拉列表中,选择 JAR 类型的所需工件。 该列表显示为当前项目配置的所有工件。要构建所有已配置的工件,请选择 Build all artifacts 选项。

于 2019-01-07T12:26:14.397 回答
1

我的问题是:我使用了 Intellij IDEA(尝试了不同的版本)+ Gradle。当我编译项目并构建 artifacf jar 时,如上面的响应所示,我收到一个错误 - “没有主要清单属性 ...”

这个解决方案对我有用(特别感谢 Thilina Ashen Gamage(见上文)的提示):

摘录 - 如果您使用外部库并通过Project Settings - Artifacts - Add (+) - Jar - From modules with dependencies构建项目,那么可能是由于程序错误,带有 MANIFEST_MF 文件的 META-INF 文件夹不包括 jar。为避免它创建EMPTY jar 文件。

项目设置 - 工件 - 添加 (+) - Jar - EMPTY JAR。META-INF 文件夹将添加到资源文件夹中。然后选择你的主要课程。您将看到以下 jar 结构: 注意文件夹 META-INF 的存在 注意 META-INF 文件夹的存在 然后您可以构建您的项目并构建工件。该解决方案也适用于 javaFX 应用程序。

于 2019-03-04T23:00:54.807 回答
1

使用

mvn clean package spring-boot:repackage

在 IntelliJ 终端中输入上述命令。它生成一个带有可执行 Jar 的目标文件。

于 2021-03-25T10:04:33.900 回答
0

您可能想看看 Maven ( http://maven.apache.org )。您可以将其用作应用程序的主要构建过程,或者仅通过“编辑配置”对话框执行某些任务。在 Maven 中创建模块的 JAR 的过程是相当简单的,如果您希望它在一个也很简单的自执行 JAR 中包含所有依赖项。

如果您以前从未使用过 Maven,那么您想阅读Better Builds With Maven

于 2010-02-05T09:52:48.277 回答
0

如果您在项目中使用第三方库,或者在正确创建 MANIFEST.MF 文件时遇到问题,则在运行使用生成的 JAR 文件时可能会发生冲突

File > Project Structure > Artifacts > '+' > JAR > From modules with dependencies > .....

上面提到的方法。

相反,我建议您创建一个空 JAR 并将所有其他元素手动添加到输出根目录。可以在此处找到有关此方法的精彩博客文章:http: //karthicraghupathi.com/2016/07/10/creating-an-executable-jar-in-intellij-idea/我尝试了那里提到的步骤,一切正常为了我!

于 2017-04-08T19:10:00.327 回答
0

其他一些答案是无用的,因为一旦您从 maven 项目重新导入 IntelliJ IDEA 项目,所有更改都将丢失。

jar 的构建需要由运行/调试配置触发,而不是由项目设置触发。

Jetbrains 对如何在此处完成此操作进行了很好的描述:

https://www.jetbrains.com/help/idea/maven.html

向下滚动到名为“为 Maven 目标配置触发器”的部分。

(他们描述的唯一缺点是他们的屏幕截图是默认的黑白配色方案,而不是超级棒的 darcula 主题。呃!)

所以,基本上,你所做的就是打开“Maven Projects”面板,找到感兴趣的项目,(在你的情况下,构建你的 jar 的项目)在它下面找到你想要执行的 Maven 目标, (通常是“包”目标创建 jars,)您打开它的上下文菜单,(右键单击 Windows 机器,)并且将有一个“在运行/调试之前执行...”选项,您可以选择,它会从那里牵着你的手。真的很容易。

于 2018-03-25T17:53:19.923 回答
0

如果您尝试使用 kotlin 构建 jar,则需要创建一个src/main/java文件夹并将此文件夹用作 META-INF 文件夹的位置。

于 2018-07-07T13:57:41.247 回答
0

如果您因为遇到“找不到资源文件”错误而阅读此答案,请尝试以下操作:

  1. 文件 -> 项目结构 -> Artiface -> 新建,类型为Other
  2. 给它一个好听的名字,然后在 中Output Layout,按Create Archive创建一个新的 jar,然后再给它一个好听的名字;)
  3. 点击你刚刚添加的jar,在jar中添加你编译好的模块输出
  4. 再次单击 jar,在下部窗格中,选择您的项目路径并添加,Manifest File然后设置正确Main ClassClass Path.
  5. 单击Add Library Files,然后选择您需要的库(您可以使用Ctrl+A选择全部)。
  6. Build -> Build Artifact -> Clean & Build 看看错误是否消失。
于 2020-07-22T11:33:55.810 回答
0

使用 Gradle 构建您的项目,然后 jar 在构建文件中。这是有关如何使用 Gradle 构建 .jar 文件的 Stack Overflow 链接。

带有 Gradle 的 Java 项目和在 Intellij IDEA 中构建 jar 文件 - 如何?

于 2021-01-26T23:14:11.770 回答
-3

如果你正在处理 spring/mvn 项目,你可以使用这个命令:

mvn package -DskipTests

jar 文件将保存在目标目录中。

于 2018-10-23T18:57:27.473 回答
-4

Ant 和 Maven 被广泛使用。我更喜欢 Ant,我觉得它更轻量级,你的开发者更有控制力。有人会认为这是它的缺点:-)

于 2010-06-03T07:41:38.393 回答