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

Mar*_*ett 4 jar intellij-idea

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

在将其标记为“重复”之前请小心:

尽管我已经看到 Google 和 Stack 的热门标题很有希望,但我没有找到一个很好的答案,或者标题具有误导性,或者是一个悬而未决的问题。我介绍了我之前看到的一个可能的答案(如下),以及为什么我认为它不匹配。

我过去使用过 Eclipse,但我对 IntelliJ 还是很陌生。

我已经使用过“项目结构/工件”的东西。我可以生成巨型 jar,类似于使用“shade”,但它很大,因为它包含所有嵌套的依赖项。我们想要只有这个模块的类文件的小 jar,因为我们要部署到的系统已经有所有其他的 jar。

我在 Artifacts 对话框中看到了一些更改目标目录的引用,但它随后谈到了在 Manifest 文件中进行的引用,这是我不想要的。目标环境已经设置了它的 java 路径,所以我担心在这个 jar 中有 jar 引用会搞砸。如果这真的是答案,那么我对它的工作原理感到困惑。

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

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

Mar*_*ett 7

同事解决了。

简答:

从工件配置对话框的输出布局选项卡中删除所有其他 jars/库。

更长的答案:

你仍然做文件/项目结构......

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

然后您仍然单击加号按钮(第二列)以创建新的工件设置。

诀窍是窗口第三列中的“输出布局”选项卡。突出显示除项目编译输出之外的所有条目并删除所有其他条目(单击该选项卡下的减号按钮,就在 your_project.jar 上方)

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

还要检查“Build on make”(当您稍后进行构建/重建项目时)

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