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

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


#1楼

想法8.1.3

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

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

对于依赖项,只需检查“显示库”,然后选择所需的内容。


#2楼

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

如果您以前从未使用过Maven,那么您想阅读使用Maven更好的构建 。


#3楼

蚂蚁和Maven被广泛使用。 我更喜欢Ant,我觉得它更轻巧,而且您可以更好地控制开发人员。 有人会建议这是它的缺点:-)


#4楼

可能已经有点晚了,但是我设法解决了这一问题->用winrar打开并删除META-INF文件夹中的ECLIPSEF.RSA和ECLIPSEF.SF,而且放了“ Main-class:main_class_name”(不带“ .class”) )在MANIFEST.MF中。 请确保在最后一行之后按两次Enter键,否则将无法正常工作。


#5楼

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

如何使用IntelliJ IDEA 14.1.5创建.jar

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

#6楼

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

#7楼

如果您在项目中使用了第三方库,或者在正确创建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/我尝试了此处提到的步骤,并且一切正常为了我!


#8楼

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

文件->项目结构


#9楼

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

1.从IntelliJ创建工件:

  • 转到项目结构:

  • 创建一个新的工件:

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

您必须更改清单目录:

<project folder>\src\main\java

用“资源”替换“ java”

<project folder>\src\main\resources

它应该是这样的:

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

  • 要构建工件,请构建工件,然后选择“重建”。 它将使用您的jar文件及其依赖项创建一个“输出”文件夹。

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文件。


#10楼

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

文件->项目结构->项目设置->工件->单击绿色加号-> Jar->来自具有依赖性的模块...

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

提取到目标Jar

建立 构建工件| 建立

尝试从中提取.jar文件

项目名称| 出| 文物| ProjectName_jar | ProjectName.jar


#11楼

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

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

Jetbrains很好地描述了如何在此处完成此操作:

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

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

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

因此,基本上,您要做的是打开“ Maven项目”面板,找到感兴趣的项目(在您的情况下,是构建jar的项目),在其下方找到了要执行的Maven目标,(通常是“ package”目标创建jar),打开它的上下文菜单(在Windows计算机上单击鼠标右键),然后会有一个“ Run / Debug ...之前执行”选项选择,它将从那里牵手您。 真的很容易


#12楼

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


#13楼

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

mvn package -DskipTests

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


#14楼

这是IntelliJ IDEA 2018.3帮助的官方答案。 我尝试了,它起作用了。

从模块构建JAR文件;

  1. 在主菜单上,选择“生成” |“创建”。 建立神器。

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


#15楼

这是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> 

屏幕截图: 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. 运行 :)


#16楼

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

java -jar xxxxx.jar

xxxxx.jar中没有主清单属性

解决方案是

您必须更改清单目录:

<project folder>\src\main\java

将Java更改为资源

<project folder>\src\main\resources

#17楼

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

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

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

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


#18楼

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

而是在直接在src创建它时起作用: src/META-INF/MANIFEST.MF


#19楼

就像上面的人说的那样,但我必须指出一点。 您必须选中该复选框:

包含在项目构建中

如何正确地从IntelliJ构建jar?相关推荐

  1. IntelliJ IDEA jar包导入

    IntelliJ IDEA jar包导入 一.选择FIle菜单中的Project Structrue. 二如下图选择Dependencies,然后点击右侧的绿色加号,选择1.JARs or direc ...

  2. 通过dockerfile构建jar包镜像

    1.编写Dockerfile文件 # 指定基础镜像 FROM java:8 # 维护者信息 MAINTAINER key "422943393@qq.com" # 拷贝jar包 A ...

  3. API战略中台的正确落地方式:构建高效的“API管理平台”

    白山云科技 "一个组织的API战略应当是该组织数字化战略的重要支撑,并在其中占有相当大的比例." --Gartner分析师Paolo Malinverno, Mark O'Neil ...

  4. android 引用jar的r文件,正确的方法来处理Android库的ant构建. Build从jar文件中排除R.class...

    目前遇到的问题是我们使用ant生成的构建版本不包含R.class文件.看一下ADT build.xml,我看到了这个: ... includes="**/*.class" excl ...

  5. Intellij Idea打包jar

    https://blog.csdn.net/xuemengrui12/article/details/74984731 步骤: 1. 选中Java项目工程名称,在菜单中选择 File->proj ...

  6. IntelliJ IDEA中生成jar包并运行

    1.IntelliJ IDEA中的java项目生成jar包 IntelliJ IDEA中的java项目(比如:myproject),可以生成jar包. 本文以IntelliJ IDEA 2022.3 ...

  7. java自带的unpack闪退,java - 使用requiresUnpack无法正常使用Maven构建的Spring Boot JAR - 堆栈内存溢出...

    我的POM看起来像这样: xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/ ...

  8. 2021年 最新 多阶段构建dockerfile实现java源码编译打jar包并做成镜像

    多阶段构建指在Dockerfile中使用多个FROM语句,每个FROM指令都可以使用不同的基础镜像,并且是一个独立的子构建阶段.使用多阶段构建打包Java应用具有构建安全.构建速度快.镜像文件体积小等 ...

  9. java ee eclipse idea,转----从Eclipse转移到IntelliJ IDEA一点心得

    intellij idea.jpg 使用IntelliJ IDEA其实并不太久,用了这段时间以后,觉得的确很是好用.刚刚从Eclipse转过来的很多人开始可能不适应,我就把使用过程中的一些经验和常用功 ...

最新文章

  1. python常用内置模块-Python常用内置模块之xml模块(详解)
  2. 现在不坚持,以后都会放弃
  3. .process和ProcessFunction(没有整理完)
  4. 微信小程序扫码的代码及获取二维码的url地址
  5. git 为什么不能断点_跟我一起学docker(九)--持续系统集成了解下git
  6. java-构建jar带哟参数提示的
  7. ASP.Net快速开发新闻系统 在线播放
  8. 华为S1720, S2700, S5700, S6720 V200R010C00 产品文档
  9. 这个小伙因WannaCry勒索软件一夜成名,获得一年免费披萨
  10. mpython 直接访问_python -mSimpleHTTPServer 开启一个简单的http服务器,可传输文件
  11. linux 线程退出资源回收,有关linux线程资源回收的有关问题
  12. 转载 linux系统调用和库函数调用的区别
  13. mysqlserver输入密码后闪退_iOS降级教程:iOS 14 后如何降级到ios13?
  14. 小甲鱼零基础入门python课后作业及答案_小甲鱼python视频第四讲(笔记及课后习题答案)...
  15. 数据结构手把手教学——顺序表
  16. 找到解决办法了,特回来写总结,the import cannot be resolved问题可以通过以下方法解决
  17. Vue——商品详情页(未完,写着以免忘掉)
  18. html的滚动条样式,css滚动条样式
  19. c语言打包游戏补丁,C语言实现的系统补丁自动安装工具.doc
  20. JavaScript笔试题(一)

热门文章

  1. Java 正则表达式源码解析
  2. Ubentu编译Android源码(AOSP)
  3. Dagger2从入门到熟练
  4. react-native新导航组件react-navigation详解
  5. JS原型与原型链终极详解
  6. Kaggle入门,看这一篇就够了
  7. Fragment之底层关键操作函数moveToState
  8. iOS自定义View 控件自动计算size能力
  9. iOS 解决导航栏pop返回时出现黑块问题!
  10. (012) java后台开发之Apache与Tomcat有什么关系和区别