IntelliJ:生成一个JAR但不*包括依赖项

时间:2015-03-23 23:28:23

标签: intellij-idea jar

在一个简单的IntelliJ模块中,我只想通过IntelliJ IDE命令生成带有.class文件的.jar文件。

在将此标记为"重复":

之前,请务必小心

虽然我已经看到Google和Stack点击了有前途的游戏,但我没有找到一个非常好的答案,或者标题是误导性的,或者它是一个悬而未决的问题。我介绍了我之前(下面)看到的一个可能的答案,以及为什么我认为它不匹配。

我过去曾使用过Eclipse,但我对IntelliJ来说还是新手。

我使用过" Project Structure / Artifacts"东西。我可以生成巨型jar,类似于使用" shade",但它很大,因为它包含所有嵌套的依赖项。我们希望小jar只包含这个模块的类文件,因为我们正在部署的系统已经安装了所有其他的jar。

我已经看到了一些关于在Artifacts对话框中更改目标目录的引用,但它会讨论在Manifest文件中进行的引用,这是我不想要的。目标环境已经设置了java路径,所以我担心在这个jar中使用jar引用会搞砸了。如果这确实是答案,那么我对它的运作方式感到困惑。

约束1:不能使用命令行工具,因为我实际上是通过这些步骤走向其他人,他们可能没有在路径中安装命令行工具,或者不会使用命令行工具。知道如何使用它们等等。他们不是编码员。 (是的,我知道这听起来像一个奇怪的场景;我继承了这种情况。)

约束2:我们希望将其保留为简单的IntelliJ项目,而不是转换为Maven或Ant或Gradle等。

1 个答案:

答案 0 :(得分:4)

Coworker解决了这个问题。

简答:

从Artifacts配置对话框的Output Layout选项卡中删除所有其他jar /库。

更长的答案:

您仍然执行文件/项目结构...

然后在“项目设置”中,单击“工件”。

然后你仍然点击加号按钮(第二列)ti创建一个新的工件设置。

技巧是"输出布局"窗口第三列中的选项卡。突出显示所有条目,除了项目的编译输出,并删除所有其他条目(单击该选项卡下的减号按钮,直接位于your_project.jar上方)

在我的笔记本电脑上,这会导致它暂停几秒钟;我认为它没有做任何事情,最后它反映出一切都已消失,除了"' my_module'编译输出"

同时检查" Build on make" (当你以后做Build / Rebuild Project时)

如果你需要一个完整的jar和一个超级jar,你可以拥有多个具有不同名称的Artifact配置,它们将默认为不同的输出目录。