在一个简单的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等。
答案 0 :(得分:4)
Coworker解决了这个问题。
简答:
从Artifacts配置对话框的Output Layout选项卡中删除所有其他jar /库。
更长的答案:
您仍然执行文件/项目结构...
然后在“项目设置”中,单击“工件”。
然后你仍然点击加号按钮(第二列)ti创建一个新的工件设置。
技巧是"输出布局"窗口第三列中的选项卡。突出显示所有条目,除了项目的编译输出,并删除所有其他条目(单击该选项卡下的减号按钮,直接位于your_project.jar上方)
在我的笔记本电脑上,这会导致它暂停几秒钟;我认为它没有做任何事情,最后它反映出一切都已消失,除了"' my_module'编译输出"
同时检查" Build on make" (当你以后做Build / Rebuild Project时)
如果你需要一个完整的jar和一个超级jar,你可以拥有多个具有不同名称的Artifact配置,它们将默认为不同的输出目录。