Java 如何正确地从IntelliJ构建JAR?
我有一个包含单个模块和一些依赖项的项目。 我想在一个单独的目录中创建一个jar,其中包含编译后的模块。此外,我希望在模块旁边显示依赖项 无论我如何扭曲IntelliJ的“构建jar”过程,我模块的输出都是空的(除了META-INF文件)。Idea 8.1.3 Jar是正常的,因为“output”目录(project/out/production/)中有已编译的输出 我想,在构建jar之前,您必须运行“make”Java 如何正确地从IntelliJ构建JAR?,java,intellij-idea,jar,build-process,Java,Intellij Idea,Jar,Build Process,我有一个包含单个模块和一些依赖项的项目。 我想在一个单独的目录中创建一个jar,其中包含编译后的模块。此外,我希望在模块旁边显示依赖项 无论我如何扭曲IntelliJ的“构建jar”过程,我模块的输出都是空的(除了META-INF文件)。Idea 8.1.3 Jar是正常的,因为“output”目录(project/out/production/)中有已编译的输出 我想,在构建jar之前,您必须运行“make” 对于依赖项,只需选中“ShowLibrary”并选择所需内容。您可能想看看Maven
对于依赖项,只需选中“ShowLibrary”并选择所需内容。您可能想看看Maven()。您可以将其用作应用程序的主生成过程,也可以仅通过“编辑配置”对话框执行某些任务。在Maven中创建模块的JAR的过程相当简单,如果您希望它在一个自执行JAR中包含所有的依赖项,那么这个过程也很简单
如果您以前从未使用过Maven,那么您需要阅读。Ant和Maven被广泛使用。我更喜欢Ant,我觉得它更轻量级,而且开发人员更能掌控局面。有些人认为这是它的缺点:-)下面是如何使用IntelliJ 10构建jar 文件->项目结构->项目设置->工件->单击绿色加号->Jar->来自具有依赖项的模块 上面将“骨架”设置为jar将保存到的位置。要实际构建并保存它,请执行以下操作: 提取到目标Jar 嗯 构建|构建工件|构建 尝试从中提取.jar文件
ProjectName | out | artifacts | ProjectName | jar | ProjectName.jar可能有点晚了,但我设法用这种方式解决了->
用winrar打开,删除META-INF文件夹中的ECLIPSEF.RSA和ECLIPSEF.SF,并将“Main class:Main_class_name”(不带“.class”)放在MANIFEST.MF中。请确保在最后一行之后按了两次“Enter”,否则它将无法工作。我最近遇到了这个问题,并且认为如果先前的解决方案或链接缺少详细信息,那么这些步骤很容易遵循 如何使用IntelliJ IDEA 14.1.5创建
.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>
maven汇编插件
[类主路径]
带有依赖项的jar
组装
包裹
单一的
如果在项目中使用第三方库,或者在正确创建MANIFEST.MF文件时遇到问题,则在运行使用生成的JAR文件时可能会发生冲突
File > Project Structure > Artifacts > '+' > JAR > From modules with dependencies > .....
上述方法
相反,我建议您创建一个空JAR,并手动将所有其他元素添加到输出根目录中。这里有一篇关于这种方法的精彩博客文章:我尝试了上面提到的步骤,一切都很好 对于那些像我一样受益于图像的人: 文件->项目结构
这在2017年仍然是一个问题,我希望它能帮助其他人! 我发现在IntelliJ 2017.2下创建工作jar-s有两种可能性 1。从IntelliJ创建工件:
- 转到项目结构:
- 创建新工件:
- 选择主类,并确保更改清单文件夹:
<project folder>\src\main\java
<project folder>\src\main\java
\src\main\java
将“java”替换为“资源”
\src\main\resources
它应该是这样的:
- 然后选择要打包到jar中或jar文件附近的依赖项
- 要构建您的工件,请转到构建工件并选择“重建”。它将创建一个包含jar文件及其依赖项的“out”文件夹
<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目标
- 保存它,然后运行
此过程将在“target”文件夹下创建jar文件
其他一些答案是无用的,因为一旦您从maven项目重新导入IntelliJ IDEA项目,所有更改都将丢失
jar的构建需要由运行/调试配置触发,而不是由项目设置触发
Jetbrains在这里很好地描述了如何实现这一点:
向下滚动到“为Maven目标配置触发器”部分
(他们描述的唯一缺点是他们的截图是默认的黑白配色方案,而不是超级棒的darcula主题。啊!)
所以,基本上,你要做的就是打开“Maven项目”面板,你会发现
mvn package -DskipTests
<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>
java -jar xxxxx.jar
<project folder>\src\main\java
<project folder>\src\main\resources
mvn clean package spring-boot:repackage