我有一个项目,包含一个单独的模块,和一些依赖。 我想在一个单独的目录中创建一个JAR,其中包含编译后的模块。此外,我希望在我的模块旁边有依赖项。
无论我如何扭曲IntelliJ的“构建JAR”过程,我的模块的输出都是空的(除了一个META-INF文件)。
我有一个项目,包含一个单独的模块,和一些依赖。 我想在一个单独的目录中创建一个JAR,其中包含编译后的模块。此外,我希望在我的模块旁边有依赖项。
无论我如何扭曲IntelliJ的“构建JAR”过程,我的模块的输出都是空的(除了一个META-INF文件)。
当前回答
如果您在项目中使用第三方库,或者在创建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/我尝试了上面提到的步骤,一切都很顺利!
其他回答
其他一些答案是无用的,因为一旦您从maven项目重新导入IntelliJ IDEA项目,所有的更改都将丢失。
jar的构建需要由运行/调试配置触发,而不是由项目设置触发。
Jetbrains在这里描述了如何实现这一目标:
https://www.jetbrains.com/help/idea/maven.html
向下滚动到名为“为Maven目标配置触发器”的部分。
(他们的描述唯一的缺点是,他们的截图是默认的黑白配色方案,而不是超级棒的darcula主题。啊!)
所以,基本上,你要做的就是打开“Maven项目”面板中,你发现感兴趣的项目,(在你的情况下,项目构建jar,)在你找到你想要的Maven目标执行,(通常是“包”的目标创建jar,)你打开上下文菜单,(右键单击Windows机器),将会有一个“运行/调试之前执行…”选项,您可以选择,它会把你的手从那里。真的很容易。
这里有2个maven项目的例子,一步一步:
方法一:使用maven和pom.xml构建jar
File, new, project, maven create a package , create a java program inside that package at pom.xml, add 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,
点击清洁,然后点击安装 jar文件将显示在目标文件夹中 使用以下命令测试罐子 java jar
方法2:使用maven构建jar,不修改pom.xml
文件、新建、项目、maven 创建一个包,在该包中创建一个Java程序(如上所述) 文件->项目结构->项目设置-> Artifacts ->单击绿色加号-> Jar ->来自依赖模块
非常重要!
清单。MF需要在你的资源文件夹中,Main.Class需要引用{package}-{class-name-that-contains-main-class}
然后单击菜单上的构建,构建工件,构建
在out文件夹中找到罐子
运行它:)
如果你在spring/mvn项目中工作,你可以使用这个命令:
mvn package -DskipTests
jar文件将保存在目标目录下。
8.1.3想法
Jar是可以的,因为在'output'目录(project/out/production//)中有编译输出
我猜,你必须在构建jar之前运行'make'
对于依赖项,只需检查“show library”并选择您想要的。
如果您正在阅读这个答案,因为您面临“资源文件未找到”错误,请尝试以下方法:
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.