我有一个项目,包含一个单独的模块,和一些依赖。 我想在一个单独的目录中创建一个JAR,其中包含编译后的模块。此外,我希望在我的模块旁边有依赖项。
无论我如何扭曲IntelliJ的“构建JAR”过程,我的模块的输出都是空的(除了一个META-INF文件)。
我有一个项目,包含一个单独的模块,和一些依赖。 我想在一个单独的目录中创建一个JAR,其中包含编译后的模块。此外,我希望在我的模块旁边有依赖项。
无论我如何扭曲IntelliJ的“构建JAR”过程,我的模块的输出都是空的(除了一个META-INF文件)。
当前回答
这在2017年仍然是一个问题,我希望它能帮助到那里的人! 我发现在IntelliJ 2017.2下创建工作罐有2种可能性
1. 从IntelliJ创建工件:
进入项目结构:
创建一个新的工件:
选择主类,并确保更改manifest文件夹:
您必须更改清单目录:
<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>
创建新的运行/调试配置:
选择应用程序:
填写表格 在构建后最后执行“assembly:single”maven目标
保存它,然后运行
这个过程将在“目标”文件夹下创建jar文件
其他回答
我的问题是:我使用Intellij IDEA(尝试了不同的版本)+ Gradle。 当我编译项目并构建artifacf jar时,如上面的响应所示,我收到了一个错误-“没有主清单属性…”
这个解决方案对我来说很有效(特别感谢Thilina Ashen Gamage提供的建议):
摘录-如果你使用外部库,并通过项目设置-工件-添加(+)- Jar -从有依赖关系的模块中构建项目,那么可能是因为程序错误,包含manifest文件的META-INF文件夹不包括到Jar中。为了避免它,创建空的jar文件。
项目设置-工件-添加(+)- Jar -空Jar。META-INF文件夹将被添加到资源文件夹。然后选择你的主类。你会看到以下罐子结构: 注意存在一个文件夹META-INF 然后您就可以构建项目和构件了。这个解决方案也适用于javaFX应用程序。
8.1.3想法
Jar是可以的,因为在'output'目录(project/out/production//)中有编译输出
我猜,你必须在构建jar之前运行'make'
对于依赖项,只需检查“show library”并选择您想要的。
下面是如何使用IntelliJ 10 http://blogs.jetbrains.com/idea/2010/08/quickly-create-jar-artifact/构建一个罐子
文件->项目结构->项目设置->工件->点击绿色加号-> Jar ->从模块依赖…
如果您需要使jar可运行,请选择一个主类(带有Main()方法的类)。
上面设置了“骨架”,即罐子将保存到的位置。要实际构建并保存它,请执行以下操作:
提取到目标Jar
OK
构建|构建Artifact |构建
尝试从。jar文件中提取
ProjectName | out | artifacts | ProjectName_jar | ProjectName.jar
对于那些像我一样从图片中受益的人:
File ->项目结构
如果您正在阅读这个答案,因为您面临“资源文件未找到”错误,请尝试以下方法:
File -> Project Structure -> Artiface -> New, type is Other. Give it a nice name, and in the Output Layout, press Create Archive to create a new jar, and again, give it a nice name ;) Click on the jar you just added, add your compiled module output in the jar. Click on the jar again, in the lower pane, select your project path and add Manifest File then set correct Main Class and Class Path. Click Add Library Files, and select libraries you need (you can use Ctrl+A to select all). Build -> Build Artifact -> Clean & Build and see if the error is gone.