如何正确构建IntelliJ的罐子?

rip*_*234 483 java build-process jar intellij-idea

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

无论我如何扭曲IntelliJ的"构建jar"进程,我模块的输出都显示为空(除了META-INF文件).

sim*_*mao 563

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

文件 - >项目结构 - >项目设置 - >工件 - >单击绿色加号 - >罐子 - >从具有依赖关系的模块...

上面将"骨架"设置为jar将保存到的位置.要实际构建和保存它,请执行以下操作:

提取到目标Jar

建立| 构建神器

  • 快到 2020 年了,我们几乎有了自动驾驶汽车,但我们仍然不知道如何在 Intellij 中创建可执行 jar (56认同)
  • 当包含的jar中的某些类与RSA签名时,它会失败. (9认同)
  • 此方法仍然失败,jar文件不执行 (4认同)
  • 似乎有人真的非常努力地让它无法运作.这是一种耻辱,它永远不会奏效.我尝试了至少50个不同的答案,但没有一个有效.每次都是同一个故事.现在我预留了一个星期来把它作为一个罐子输出,因为我们公司的每个人都认为它需要在制作输出罐子时付出真正的努力. (4认同)
  • Java IDE 怎么还是这么垃圾……这太疯狂了 (4认同)
  • 请注意,在执行“从模块创建 JAR”时选择正确的“主类”。否则 JAR 文件将永远不会按您的预期工作。 (2认同)
  • 正如许多人在我之前写的那样,这是一种有时可行的简化.请参阅下面的@zsolt tolvali的回答.从IntelliJ的角度来看,在创建新项目时使JAR创建过程成为默认活动会很好,因为很少有人不需要它! (2认同)

Zso*_*aly 217

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

1.从IntelliJ创建工件:

  • 转到项目结构:

文件菜单

  • 创建一个新工件:

创建一个新工件

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

在此输入图像描述

您必须更改清单目录:

<project folder>\src\main\java 
Run Code Online (Sandbox Code Playgroud)

用"资源"替换"java"

<project folder>\src\main\resources
Run Code Online (Sandbox Code Playgroud)

它应该是这样的:

新清单的正确方法

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

  • 要构建工件,请构建工件并选择"rebuild".它将使用您的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>
Run Code Online (Sandbox Code Playgroud)
  • 创建新的运行/调试配置:

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

  • 选择申请:

选择申请

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

在此输入图像描述

最终设置

  • 保存,然后运行

在此输入图像描述

此过程将在"target"文件夹下创建jar文件

JAR文件位置

  • 唯一一个为我工作!谢谢! (4认同)
  • 这对我有用。这应该是公认的答案。 (4认同)
  • 将manifest目录更改为src/resources是关键点!!! 谢谢〜 (4认同)
  • 我得到了采用上述解决方案的“无主要清单属性”。没有人提到更改“清单路径”。谢谢!! (4认同)
  • 另外,唯一为我工作的人,谢谢! (2认同)
  • 清单路径是最关键的路径,谢谢@Zsolt Tolvaly (2认同)
  • 这应该是最佳答案。谢谢! (2认同)

小智 133

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

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

  1. 文件>全部保存.
  2. 使用main方法运行驱动程序或类.
  3. 文件>项目结构.
  4. 选择Tab"Artifacts".
  5. 单击窗口顶部附近的绿色加号按钮.
  6. 从添加下拉菜单中选择JAR.选择"来自具有依赖关系的模块"
  7. 选择主类.
  8. 单选按钮应选择"提取到目标JAR".按确定.
  9. 选中"Build on make"框
  10. 按应用并确定.
  11. 从主菜单中,选择构建下拉列表.
  12. 选择选项构建工件.


Crt*_*Crt 29

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

文件 - >项目结构

在此输入图像描述

在此输入图像描述

在此输入图像描述

在此输入图像描述

  • @samuelowino我不欣赏你这么说.解释什么"根本不起作用". (4认同)

rrr*_*rrr 11

这是maven项目的2个示例,逐步介绍:

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

  1. 文件,新项目,Maven
  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>
    
    Run Code Online (Sandbox Code Playgroud)

屏幕截图: 在此处输入图片说明 4.通过单击搜索图标打开maven项目框,然后键入maven, 在此处输入图片说明

  1. 单击清洁,然后单击安装 在此处输入图片说明

  2. 您的jar文件将显示在目标文件夹中 在此处输入图片说明

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

在此处输入图片说明

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

  1. 文件,新项目,Maven
  2. 创建一个包,在该包内创建一个Java程序(与上面相同)
  3. 文件->项目结构->项目设置->工件->单击绿色加号-> Jar->来自具有依赖性的模块

很重要!

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

在此处输入图片说明 在此处输入图片说明

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

在此处输入图片说明

  1. 在out文件夹中找到jar

在此处输入图片说明

  1. 运行 :)

在此处输入图片说明


Sae*_*eed 7

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

java -jar xxxxx.jar
Run Code Online (Sandbox Code Playgroud)

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

解决方案是

您必须更改清单目录:

<project folder>\src\main\java 
Run Code Online (Sandbox Code Playgroud)

将 java 更改为资源

<project folder>\src\main\resources
Run Code Online (Sandbox Code Playgroud)


jba*_*rov 5

这可能有点晚了,但我设法用这种方式解决 - >用winrar打开并删除META-INF文件夹中的ECLIPSEF.RSA和ECLIPSEF.SF,而且输入"Main-class:main_class_name"(不带".class" )在MANIFEST.MF.确保在最后一行之后按两次"Enter",否则它将无效.