【发布时间】:2010-11-08 03:06:06
【问题描述】:
我有一个包含单个模块和一些依赖项的项目。 我想在一个单独的目录中创建一个包含已编译模块的 jar。另外,我想让依赖项出现在我的模块旁边。
无论我如何扭曲 IntelliJ 的“构建 jar”过程,我的模块的输出都是空的(除了一个 META-INF 文件)。
【问题讨论】:
标签: java intellij-idea jar build-process
我有一个包含单个模块和一些依赖项的项目。 我想在一个单独的目录中创建一个包含已编译模块的 jar。另外,我想让依赖项出现在我的模块旁边。
无论我如何扭曲 IntelliJ 的“构建 jar”过程,我的模块的输出都是空的(除了一个 META-INF 文件)。
【问题讨论】:
标签: java intellij-idea jar build-process
这是使用 IntelliJ 10 http://blogs.jetbrains.com/idea/2010/08/quickly-create-jar-artifact/ 构建 jar 的方法
文件 -> 项目结构 -> 项目设置 -> 工件 -> 点击绿色加号 -> Jar -> 来自具有依赖关系的模块...
上面将“骨架”设置为将保存 jar 的位置。要实际构建并保存它,请执行以下操作:
解压到目标Jar
好的
构建 |构建工件 |构建
尝试从
中提取 .jar 文件项目名称 |出|文物 |项目名称_jar |项目名称.jar
【讨论】:
这在 2017 年仍然是一个问题,我希望它可以帮助到那里的人! 我发现在 IntelliJ 2017.2 下创建工作 jar-s 的 2 种可能性
1.从 IntelliJ 创建工件:
您必须更改清单目录:
<project folder>\src\main\java
将“java”替换为“资源”
<project folder>\src\main\resources
它应该是这样的:
然后选择要打包到 jar 中的依赖项,或者 NEAR 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 文件
【讨论】:
no main manifest attribute采用上述解决方案。没有人提到更改path to manifest。谢谢!!
我最近遇到了这个问题,如果任何先前的解决方案或链接缺少详细信息,我认为这些步骤很容易遵循。
如何使用 IntelliJ IDEA 14.1.5 创建.jar:
【讨论】:
这里有 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>
屏幕截图: 4.点击搜索图标打开maven项目框并输入maven,
MANIFEST.MF 需要在您的资源文件夹中,而 Main.Class 需要引用 {package}-{class-name-that-contains-main-class}
【讨论】:
当我使用these solution 这个错误来了:
java -jar xxxxx.jar
没有主清单属性,在 xxxxx.jar 中
解决方案是:
您必须更改清单目录:
<project folder>\src\main\java
把java改成资源
<project folder>\src\main\resources
【讨论】:
可能有点晚了,但我设法以这种方式解决了它-> 用winrar打开并删除META-INF文件夹中的ECLIPSEF.RSA和ECLIPSEF.SF,然后在MANIFEST.MF中放入“Main-class:main_class_name”(不带“.class”)。确保在最后一行之后按两次“Enter”,否则将不起作用。
【讨论】:
有了 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.3
jar 没问题,因为'output' 目录(project/out/production//)中有编译输出
我猜,你必须在构建 jar 之前运行“make”
对于依赖项,只需检查“显示库”并选择您想要的。
【讨论】:
这里是IntelliJ IDEA 2018.3 Help的官方解答。我试过了,效果很好。
从模块构建 JAR 文件;
在主菜单上,选择 Build |构建工件。
从下拉列表中,选择 JAR 类型的所需工件。 列表显示为当前项目配置的所有工件。要构建所有已配置的工件,请选择 Build all 工件选项。
【讨论】:
我的问题是:我使用了 Intellij IDEA(尝试了不同的版本)+ Gradle。 当我编译项目并构建 artifacf jar 时,如上述响应所示,我收到一个错误 - “没有主要清单属性 ...”
这个解决方案对我有用(特别感谢 Thilina Ashen Gamage(见上文)的提示):
摘录 - 如果您使用外部库并通过项目设置 - 工件 - 添加 (+) - Jar - 从具有依赖项的模块 构建项目,那么可能是因为 META-INF 的程序错误包含 MANIFEST_MF 文件的文件夹不包括 jar。为避免它创建 EMPTY jar 文件。
项目设置 - 工件 - 添加 (+) - Jar - EMPTY JAR。 META-INF 文件夹将添加到 resources 文件夹中。然后选择你的主要课程。您将看到以下 jar 结构: 注意文件夹 META-INF 的存在 然后,您可以构建您的项目并构建工件。该解决方案也适用于 javaFX 应用程序。
【讨论】:
使用
mvn clean package spring-boot:repackage
在 IntelliJ 终端中输入上述命令。它会生成一个带有可执行 Jar 的目标文件。
【讨论】:
您可能想看看 Maven (http://maven.apache.org)。您可以将其用作应用程序的主要构建过程,也可以仅通过“编辑配置”对话框执行某些任务。在 Maven 中创建一个模块的 JAR 的过程相当简单,如果您希望它在一个可自执行的 JAR 中包含所有依赖项,这也是微不足道的。
如果您以前从未使用过 Maven,那么您想阅读Better Builds With Maven。
【讨论】:
如果您在项目中使用第三方库,或者在正确创建 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/ 我尝试了那里提到的步骤,一切对我来说都很好!
【讨论】:
其他一些答案没有用,因为一旦您从 maven 项目重新导入 IntelliJ IDEA 项目,所有更改都将丢失。
jar 的构建需要由运行/调试配置触发,而不是由项目设置触发。
Jetbrains 在这里很好地描述了如何实现这一点:
https://www.jetbrains.com/help/idea/maven.html
向下滚动到“为 Maven 目标配置触发器”部分。
(他们描述的唯一缺点是他们的屏幕截图是默认的黑白配色方案,而不是超级棒的 darcula 主题。呃!)
所以,基本上,您所做的是打开“Maven 项目”面板,您会找到感兴趣的项目(在您的情况下,是构建您的 jar 的项目),在它下面您会找到您想要的 Maven 目标想要执行,(通常是“包”目标创建 jars,)你打开它的上下文菜单,(右键单击 Windows 机器,)并且会有一个“在运行/调试之前执行...”选项您可以选择它,它会从那里牵着您的手。真的很简单。
【讨论】:
如果您尝试使用 kotlin 构建 jar,则需要创建一个 src/main/java 文件夹并将此文件夹用作 META-INF 文件夹的位置。
【讨论】:
如果您因为遇到“找不到资源文件”错误而阅读此答案,请尝试以下操作:
Output Layout 中按Create Archive 来创建一个新的jar,然后再给它一个好听的名字;)Manifest File,然后正确设置Main Class和Class Path。Add Library Files,选择需要的库(可以使用Ctrl+A全选)。【讨论】:
使用 Gradle 构建您的项目,然后 jar 在构建文件中。这是有关如何使用 Gradle 构建 .jar 文件的 Stack Overflow 链接。
Java project with Gradle and building jar file in Intellij IDEA - how to?
【讨论】:
如果你正在做 spring/mvn 项目,你可以使用这个命令:
mvn package -DskipTests
jar 文件将保存在目标目录中。
【讨论】:
Ant 和 Maven 被广泛使用。我更喜欢 Ant,我觉得它更轻量级,你的开发者更有控制力。有些人会认为这是它的缺点:-)
【讨论】: