无论我如何歪曲IntelliJ的“build jar”;进程,我的模块的输出显示为空(除了一个META-INF文件)。
META-INF
8.1.3想法
Jar是可以的,因为在'output'目录(project/out/production//)中有编译输出
我猜,你必须在构建jar之前运行'make'
对于依赖项,只需检查“show library”并选择您想要的。
您可能想看一看Maven (http://maven.apache.org)。您既可以将它用作应用程序的主要构建过程,也可以仅通过Edit Configurations对话框执行某些任务。在Maven中创建一个模块的JAR的过程是相当简单的,如果您希望它在一个可自行执行的JAR中包含所有依赖项,那么这个过程也是非常简单的。
如果您以前从未使用过Maven,那么您希望阅读使用Maven更好地构建。
Ant和Maven被广泛使用。我更喜欢Ant,我觉得它更轻量级,你作为开发人员更有控制权。有些人会认为这是它的缺点:-)
下面是如何用intellij10 http://blogs.jetbrains.com/idea/2010/08/quickly-create-jar-artifact/构建一个罐子
# EYZ0→# EYZ1→# EYZ2→# EYZ3→点击绿色加号 -># EYZ5→# EYZ6
如果您需要使jar可运行,则选择主类(使用main()方法的那个)。
main()
上面设置了“骨架”;到罐子被保存的地方。要实际构建并保存它,请执行以下操作:
提取到目标Jar
好吧
构建|构建Artifact |构建
尝试从。jar文件中提取
ProjectName | out | artifacts | ProjectName_jar | ProjectName.jar
我最近遇到了这个问题,如果之前的解决方案或环节缺少细节,我认为这些步骤很容易遵循。
如何使用IntelliJ IDEA 14.1.5创建.jar:
.jar
在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>
如果您在项目中使用第三方库,或者在创建MANIFEST时遇到问题。MF文件,在运行使用
File > Project Structure > Artifacts > '+' > JAR > From modules with dependencies > .....
上述方法。
相反,我建议您创建一个空JAR,并手动将所有其他元素添加到输出根中。关于这种方法的一篇精彩的博客文章可以在这里找到:http://karthicraghupathi.com/2016/07/10/creating-an-executable-jar-in-intellij-idea/我尝试了上面提到的步骤,一切都很顺利!
对于那些像我一样从图片中受益的人:
# eyz0 -> # eyz1
1. 从IntelliJ创建工件:
您必须更改清单目录:
<project folder>\src\main\java
将“java”替换为“resources”
<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>
.
这个过程将在“目标”文件夹下创建jar文件
其他一些答案是无用的,因为一旦您从maven项目重新导入IntelliJ IDEA项目,所有的更改都将丢失。
jar的构建需要由运行/调试配置触发,而不是由项目设置触发。
Jetbrains在这里描述了如何实现这一目标:
https://www.jetbrains.com/help/idea/maven.html
向下滚动到名为“为Maven目标配置触发器”的部分。
(他们的描述唯一的缺点是,他们的截图是默认的黑白配色方案,而不是超级棒的darcula主题。啊!)
所以,基本上,你要做的就是打开“Maven项目”面板中,你发现感兴趣的项目,(在你的情况下,项目构建jar,)在你找到你想要的Maven目标执行,(通常是“包”的目标创建jar,)你打开上下文菜单,(右键单击Windows机器),将会有一个“运行/调试之前执行…”选项,您可以选择,它会把你的手从那里。真的很容易。
如果你试图用kotlin构建一个jar,你需要创建一个src/main/java文件夹,并使用这个文件夹作为META-INF文件夹的位置。
src/main/java
如果你在spring/mvn项目中工作,你可以使用这个命令:
mvn package -DskipTests
jar文件将保存在目标目录下。
以下是IntelliJ IDEA 2018.3帮助的官方答案。我试过了,成功了。
要从模块构建JAR文件; 在主菜单上,选择Build | Build Artifact。 从下拉列表中,选择JAR类型的所需工件。 列表显示当前项目配置的所有工件。要构建所有已配置的构件,请选择Build all 工件选择。< / em > < / p > < /李>
要从模块构建JAR文件;
在主菜单上,选择Build | Build Artifact。
从下拉列表中,选择JAR类型的所需工件。 列表显示当前项目配置的所有工件。要构建所有已配置的构件,请选择Build all 工件选择。< / em > < / p > < /李>
这里有2个maven项目的例子,一步一步:
在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>
screen capture: 4. open maven project box by click on the search icon and type maven,
click on clean, then click on install
your jar file will show up inside the target folder
test your jar using java -jar
The MANIFEST.MF needs to be in your resources folder and the Main.Class needs to refer to {package}-{class-name-that-contains-main-class}
当我使用这些解决方案这个错误来:
java -jar xxxxx.jar
在xxx.jar中没有主清单属性
# EYZ0:
将Java更改为资源
这个解决方案对我来说很有效(特别感谢Thilina Ashen Gamage提供的建议):
摘录-如果你使用外部库,并通过项目设置-工件-添加(+)- Jar -从模块的依赖构建项目,那么可能是因为程序错误,META-INF文件夹与manifest文件不包括jar。为了避免它,创建空 jar文件。
我试图从多模块芬兰湾的科特林应用程序构建一个jar,并得到臭名昭著的“没有主清单属性”错误。在src/main/resources中创建清单目录也没有工作。
src/main/resources
相反,它在src中直接创建时工作:src/META-INF/MANIFEST.MF。
src
src/META-INF/MANIFEST.MF
包括在项目构建中
如果你正在阅读这个答案,因为你正面临“资源文件未找到”;错误,试试这个:
Output Layout
Create Archive
Manifest File
Main Class
Class Path
Add Library Files
使用Gradle来构建你的项目,然后jar就在构建文件中。这是一个Stack Overflow链接,介绍如何用Gradle构建.jar文件。
Java项目与Gradle和构建jar文件在Intellij IDEA -如何?< / >
使用
mvn clean package spring-boot:repackage
在IntelliJ终端中输入以上命令。它生成一个带有Executable Jar的目标文件。
我试了大部分给出的答案,但就我的情况而言,“out”;文件夹(包含jar文件)未被创建。这就完成了任务:
构建→构建工件->(你会看到类名)->构建
现在,“out"文件夹被创建,jar文件在其中。