我有一个包含单个模块和一些依赖项的项目。 我想在一个单独的目录中创建一个包含已编译模块的jar。另外,我想在我的模块旁边有依赖项。
无论我如何扭曲IntelliJ的“构建jar”进程,我模块的输出都显示为空(除了META-INF文件)。
答案 0 :(得分:491)
以下是使用IntelliJ 10 http://blogs.jetbrains.com/idea/2010/08/quickly-create-jar-artifact/
构建jar的方法档案 - >项目结构 - >项目设置 - >文物 - >点击绿色加号 - > Jar - >来自具有依赖关系的模块......
上面将“骨架”设置为jar将保存到的位置。要实际构建和保存它,请执行以下操作:
提取到目标Jar
行
构建|构建工件
答案 1 :(得分:157)
这仍是2017年的一个问题,我希望它会帮助那里的人! 我发现在IntelliJ 2017.2下创建工作jar的2种可能性
<强> 1。从IntelliJ创建工件:
您必须更改清单目录:
<project folder>\src\main\java
替换&#34; java&#34;使用&#34;资源&#34;
<project folder>\src\main\resources
这应该是这样的:
然后你选择你想要在你的jar中打包的依赖项,或者你的jar文件附近
要构建工件,请构建工件并选择&#34; rebuild&#34;。它将创造一个&#34; out&#34; 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>
此过程将在&#34; target&#34;下创建jar文件。夹
答案 2 :(得分:127)
我最近遇到了这个问题,并且如果任何先前的解决方案或链接缺少详细信息,我认为这些步骤很容易理解。
如何使用IntelliJ IDEA 14.1.5创建.jar
:
答案 3 :(得分:28)
答案 4 :(得分:6)
以下是有关maven项目的2个示例,逐步介绍:
在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}
答案 5 :(得分:5)
可能有点晚了,但我设法用这种方式解决了 - &gt; 用winrar打开并删除META-INF文件夹中的ECLIPSEF.RSA和ECLIPSEF.SF,而且放置&#34; Main-class:main_class_name&#34; (在MANIFEST.MF中没有&#34; .class&#34;)。确保按下&#34;输入&#34;在最后一行之后两次,否则它不会工作。
答案 6 :(得分:1)
使用
Dim c = HttpContext.Current.Request.Cookies
在 IntelliJ 终端中输入上述命令。它生成一个带有 Executable Jar 的 Target 文件。
答案 7 :(得分:1)
使用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)
理念8.1.3
Jar是可以的,因为'output'目录中有编译输出(project / out / production //)
我想,你必须在构建jar之前运行'make'
依赖关系只需选中“show library”并选择你想要的内容。
答案 9 :(得分:0)
如果您要使用kotlin来构建jar,则需要创建一个src/main/java
文件夹,并将该文件夹用作META-INF文件夹的位置。
答案 10 :(得分:0)
使用 Gradle 构建您的项目,然后 jar 位于构建文件中。这是关于如何使用 Gradle 构建 .jar 文件的 Stack Overflow 链接。
Java project with Gradle and building jar file in Intellij IDEA - how to?
答案 11 :(得分:0)
如果您因为遇到“找不到资源文件”错误而正在阅读此答案,请尝试以下操作:
Output Layout
中按Create Archive
创建一个新的jar,然后再给它一个好听的名字;)Manifest File
,然后设置正确的Main Class
和Class Path
。Add Library Files
,然后选择所需的库(可以使用 Ctrl + A 来选择所有库)。答案 12 :(得分:0)
答案 13 :(得分:0)
我试图从多模块Kotlin 应用程序构建一个jar,并收到臭名昭著的“没有主要清单属性”错误。在src/main/resources
中创建清单目录也不起作用。
相反,当直接在src
中创建它时有效: src/META-INF/MANIFEST.MF
。
答案 14 :(得分:0)
我的问题是:我使用了Intellij IDEA(尝试了不同的版本)+ Gradle。 如上面的回复所示,当我编译项目并构建artifacf jar时,我收到一个错误-“无主清单attrubute ...”
此解决方案对我有用(特别感谢Thilina Ashen Gamage(见上文)的提示):
摘录-如果您使用外部库并通过项目设置-工件-添加(+)-Jar-来自具有依赖性的模块来构建项目,则可能是因为META-INF程序错误包含MANIFEST_MF文件的文件夹(不包括在jar中)。为避免这种情况,请创建 EMPTY jar文件。
项目设置-工件-添加(+)-罐子-空瓶子。 META-INF文件夹将添加到资源文件夹。然后选择您的主班。您将看到以下jar结构: 请注意文件夹META-INF的存在 然后,您可以构建您的项目并构建工件。此解决方案也适用于javaFX应用程序。
答案 15 :(得分:0)
当我使用these solution时,出现此错误:
java -jar xxxxx.jar
在xxxxx.jar中没有主清单属性
,解决方案是:
您必须更改清单目录:
<project folder>\src\main\java
将Java更改为资源
<project folder>\src\main\resources
答案 16 :(得分:0)
这是 IntelliJ IDEA 2018.3帮助的正式答案。我尝试过,并且有效。
要通过模块构建JAR文件;
在主菜单上,选择“构建” |“选择”。构建工件。
从下拉列表中,选择所需的JAR类型的工件。 该列表显示了为当前项目配置的所有工件。要构建所有配置的工件,请选择全部构建 工件选项。
答案 17 :(得分:0)
如果您正在从事spring / mvn项目,则可以使用以下命令:
mvn package -DskipTests
jar文件将保存在目标目录中。
答案 18 :(得分:0)
其他一些答案毫无用处,因为一旦从maven项目重新导入IntelliJ IDEA项目,所有更改都将丢失。
jar的构建需要由运行/调试配置触发,而不是由项目设置触发。
Jetbrains在这里有一个很好的描述如何实现这一目标:
https://www.jetbrains.com/help/idea/maven.html
向下滚动到“为Maven目标配置触发器”一节。
(他们描述的唯一缺点是他们的截图是默认的黑白配色方案,而不是超级棒的darcula主题。唉!)
所以,基本上,你所做的就是你打开“Maven Projects”面板,你会发现你感兴趣的项目(在你的情况下,是你构建jar的项目),你找到了你的maven目标想要执行(通常“包”目标创建jar),打开它上面的上下文菜单,(右键单击Windows机器),将出现“运行/调试前执行...”选项您可以选择,它会从那里牵手。真的很容易。
答案 19 :(得分:0)
如果您在项目中使用第三方库,或者在正确创建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/我尝试了那里提到的步骤,一切都运行正常!
答案 20 :(得分:0)
您可能想看看Maven(http://maven.apache.org)。您可以将其用作应用程序的主要构建过程,也可以仅通过“编辑配置”对话框执行某些任务。在Maven中创建模块的JAR的过程是相当简单的,如果你希望它包含一个微不足道的自执行JAR中的所有依赖项。
如果您之前从未使用过Maven,那么您想阅读Better Builds With Maven。
答案 21 :(得分:-4)
Ant和Maven被广泛使用。我更喜欢Ant,我觉得它更轻巧,你开发人员更有控制力。有些人认为这是它的缺点: - )