如何正确构建IntelliJ的罐子?

时间:2009-07-04 17:05:36

标签: java intellij-idea jar build-process

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

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

22 个答案:

答案 0 :(得分:491)

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

构建jar的方法

档案 - >项目结构 - >项目设置 - >文物 - >点击绿色加号 - > Jar - >来自具有依赖关系的模块......

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

提取到目标Jar

构建|构建工件

答案 1 :(得分:157)

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

<强> 1。从IntelliJ创建工件:

  • 转到项目结构:

File menu

  • 创建一个新工件:

Create a new artifact

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

enter image description here

您必须更改清单目录:

<project folder>\src\main\java 

替换&#34; java&#34;使用&#34;资源&#34;

<project folder>\src\main\resources

这应该是这样的:

correct way for new manifest

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

  • 要构建工件,请构建工件并选择&#34; rebuild&#34;。它将创造一个&#34; out&#34; jar文件及其依赖项的文件夹。

enter image description here

<强> 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>
  • 创建新的运行/调试配置:

Create a new run/debug configuration:

  • 选择申请表:

Choose application

  • 填写表格
  • 添加&#34;程序集:single&#34;构建后最后执行的maven目标

enter image description here

Final setup

  • 保存,然后运行

enter image description here

此过程将在&#34; target&#34;下创建jar文件。夹

JAR file location

答案 2 :(得分:127)

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

如何使用IntelliJ IDEA 14.1.5创建.jar

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

答案 3 :(得分:28)

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

档案 - &gt;项目结构

enter image description here

enter image description here

enter image description here

enter image description here

答案 4 :(得分:6)

以下是有关maven项目的2个示例,逐步介绍:

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

  1. 文件,新建,项目,maven
  2. 创建一个包,在该包内创建一个Java程序 enter image description here
  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>
    

屏幕截图: enter image description here 4.通过单击搜索图标打开maven项目框,然后键入maven, enter image description here

  1. 单击“干净”,然后单击“安装” enter image description here

  2. 您的jar文件将显示在目标文件夹中 enter image description here

  3. 使用以下命令测试您的jar java -jar

enter image description here

方法2:在不更改pom.xml的情况下使用Maven构建jar

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

非常重要!

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

enter image description here enter image description here

  1. 然后单击“在菜单上构建”,“构建工件”,“构建”

enter image description here

  1. 在out文件夹中找到罐子

enter image description here

  1. 运行它:)

enter image description here

答案 5 :(得分:5)

可能有点晚了,但我设法用这种方式解决了 - &gt; 用winrar打开并删除META-INF文件夹中的ECLIPSEF.RSA和ECLIPSEF.SF,而且放置&#34; Main-class:main_class_name&#34; (在MANIFEST.MF中没有&#34; .class&#34;)。确保按下&#34;输入&#34;在最后一行之后两次,否则它不会工作。

答案 6 :(得分:1)

使用

Dim c = HttpContext.Current.Request.Cookies

在 IntelliJ 终端中输入上述命令。它生成一个带有 Executable Jar 的 Target 文件。

答案 7 :(得分:1)

使用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>

答案 8 :(得分:1)

理念8.1.3

Jar是可以的,因为'output'目录中有编译输出(project / out / production //)

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

依赖关系只需选中“show library”并选择你想要的内容。

答案 9 :(得分:0)

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

答案 10 :(得分:0)

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

Java project with Gradle and building jar file in Intellij IDEA - how to?

答案 11 :(得分:0)

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

  1. 文件->项目结构-> Artiface->新建,类型为其他
  2. 给它起一个好听的名字,然后在Output Layout中按Create Archive创建一个新的jar,然后再给它一个好听的名字;)
  3. 单击刚刚添加的jar,然后将已编译模块输出添加到jar中。
  4. 再次单击jar,在下部窗格中,选择您的项目路径并添加Manifest File,然后设置正确的Main ClassClass Path
  5. 单击Add Library Files,然后选择所需的库(可以使用 Ctrl + A 来选择所有库)。
  6. 构建->构建工件->清理并构建,看看错误是否消失。

答案 12 :(得分:0)

enter image description here

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

  

包含在项目构建中

答案 13 :(得分:0)

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

相反,当直接在src中创建它时有效: src/META-INF/MANIFEST.MF

enter image description here

答案 14 :(得分:0)

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

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

摘录-如果您使用外部库并通过项目设置-工件-添加(+)-Jar-来自具有依赖性的模块来构建项目,则可能是因为META-INF程序错误包含MANIFEST_MF文件的文件夹(不包括在jar中)。为避免这种情况,请创建 EMPTY jar文件。

项目设置-工件-添加(+)-罐子-空瓶子。 META-INF文件夹将添加到资源文件夹。然后选择您的主班。您将看到以下jar结构: note the presence of a folder META-INF 请注意文件夹META-INF的存在 然后,您可以构建您的项目并构建工件。此解决方案也适用于javaFX应用程序。

答案 15 :(得分:0)

当我使用these solution时,出现此错误:

java -jar xxxxx.jar
  

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

,解决方案是

您必须更改清单目录:

<project folder>\src\main\java 

将Java更改为资源

<project folder>\src\main\resources

答案 16 :(得分:0)

这是 IntelliJ IDEA 2018.3帮助的正式答案。我尝试过,并且有效。

  

要通过模块构建JAR文件;

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

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

  4.   

答案 17 :(得分:0)

如果您正在从事spring / mvn项目,则可以使用以下命令:

mvn package -DskipTests

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

答案 18 :(得分:0)

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

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

Jetbrains在这里有一个很好的描述如何实现这一目标:

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

向下滚动到“为Maven目标配置触发器”一节。

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

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

答案 19 :(得分: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/我尝试了那里提到的步骤,一切都运行正常!

答案 20 :(得分:0)

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

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

答案 21 :(得分:-4)

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