我有一个包含单个模块和一些依赖项的项目。我想在一个单独的目录中创建一个包含已编译模块的 jar。此外,我希望在我的模块旁边显示依赖项。
无论我如何扭曲 IntelliJ 的“构建 jar”过程,我的模块的输出都是空的(除了 META-INF 文件)。
我有一个包含单个模块和一些依赖项的项目。我想在一个单独的目录中创建一个包含已编译模块的 jar。此外,我希望在我的模块旁边显示依赖项。
无论我如何扭曲 IntelliJ 的“构建 jar”过程,我的模块的输出都是空的(除了 META-INF 文件)。
这是使用 IntelliJ 10 构建 jar 的方法http://blogs.jetbrains.com/idea/2010/08/quickly-create-jar-artifact/
File-> Project Structure-> Project Settings-> Artifacts-> 点击green plus sign-> Jar->From modules with dependencies...
以上将“骨架”设置为将保存 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 中的依赖项,或者靠近你的 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 文件
我最近遇到了这个问题,如果任何先前的解决方案或链接缺少细节,我认为这些步骤很容易遵循。
如何.jar
使用 IntelliJ IDEA 14.1.5 创建一个:
下面是 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}
当我使用这些解决方案时,会出现以下错误:
java -jar xxxxx.jar
没有主要清单属性,在 xxxxx.jar
解决方案是:
您必须更改清单目录:
<project folder>\src\main\java
将java更改为资源
<project folder>\src\main\resources
可能有点晚了,但我设法以这种方式解决它 - >用winrar打开并删除META-INF文件夹中的ECLIPSEF.RSA和ECLIPSEF.SF,此外放入“Main-class:main_class_name”(没有“.class” ) 在 MANIFEST.MF 中。确保在最后一行之后按两次“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 没问题,因为在“输出”目录 (project/out/production//) 中有编译输出
我想,你必须在构建 jar 之前运行“make”
对于依赖项,只需检查“显示库”并选择你想要的。
这里是IntelliJ IDEA 2018.3 Help的官方回答。我试过了,它奏效了。
从模块构建 JAR 文件;
在主菜单上,选择 Build | 构建工件。
从下拉列表中,选择 JAR 类型的所需工件。 该列表显示为当前项目配置的所有工件。要构建所有已配置的工件,请选择 Build all artifacts 选项。
我的问题是:我使用了 Intellij IDEA(尝试了不同的版本)+ Gradle。当我编译项目并构建 artifacf jar 时,如上面的响应所示,我收到一个错误 - “没有主要清单属性 ...”
这个解决方案对我有用(特别感谢 Thilina Ashen Gamage(见上文)的提示):
摘录 - 如果您使用外部库并通过Project Settings - Artifacts - Add (+) - Jar - From modules with dependencies构建项目,那么可能是由于程序错误,带有 MANIFEST_MF 文件的 META-INF 文件夹不包括 jar。为避免它创建EMPTY jar 文件。
项目设置 - 工件 - 添加 (+) - Jar - EMPTY JAR。META-INF 文件夹将添加到资源文件夹中。然后选择你的主要课程。您将看到以下 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 Projects”面板,找到感兴趣的项目,(在你的情况下,构建你的 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 链接。
如果你正在处理 spring/mvn 项目,你可以使用这个命令:
mvn package -DskipTests
jar 文件将保存在目标目录中。
Ant 和 Maven 被广泛使用。我更喜欢 Ant,我觉得它更轻量级,你的开发者更有控制力。有人会认为这是它的缺点:-)