我有一个项目,包含一个单独的模块,和一些依赖。 我想在一个单独的目录中创建一个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文件
其他回答
8.1.3想法
Jar是可以的,因为在'output'目录(project/out/production//)中有编译输出
我猜,你必须在构建jar之前运行'make'
对于依赖项,只需检查“show library”并选择您想要的。
在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>
如果您在项目中使用第三方库,或者在创建MANIFEST时遇到问题。MF文件,在运行使用
File > Project Structure > Artifacts > '+' > JAR > From modules with dependencies > .....
上述方法。
相反,我建议您创建一个空JAR,并手动将所有其他元素添加到输出根中。关于这种方法的一篇精彩的博客文章可以在这里找到:http://karthicraghupathi.com/2016/07/10/creating-an-executable-jar-in-intellij-idea/我尝试了上面提到的步骤,一切都很顺利!
我的问题是:我使用Intellij IDEA(尝试了不同的版本)+ Gradle。 当我编译项目并构建artifacf jar时,如上面的响应所示,我收到了一个错误-“没有主清单属性…”
这个解决方案对我来说很有效(特别感谢Thilina Ashen Gamage提供的建议):
摘录-如果你使用外部库,并通过项目设置-工件-添加(+)- Jar -从有依赖关系的模块中构建项目,那么可能是因为程序错误,包含manifest文件的META-INF文件夹不包括到Jar中。为了避免它,创建空的jar文件。
项目设置-工件-添加(+)- Jar -空Jar。META-INF文件夹将被添加到资源文件夹。然后选择你的主类。你会看到以下罐子结构: 注意存在一个文件夹META-INF 然后您就可以构建项目和构件了。这个解决方案也适用于javaFX应用程序。
如上所述,但我必须指出一点。 您必须勾选复选框:
包括在项目构建中