Java IntelliJ Idea-为项目生成JAR:不包括库
我正在使用IntelliJ Idea(14.1.2)开发一个简单的java命令行应用程序 我的应用程序由两个模块组成:Java IntelliJ Idea-为项目生成JAR:不包括库,java,intellij-idea,jar,Java,Intellij Idea,Jar,我正在使用IntelliJ Idea(14.1.2)开发一个简单的java命令行应用程序 我的应用程序由两个模块组成: 仅包含“main”类的主模块 一个库模块,其中包含“做事情”的实际代码(此模块还包括并使用maven库) 从IntelliJ内部进行调试时,一切都正常工作,但现在我想构建一个JAR文件,以便在IDE外部使用该工具。 因此,正如IntelliJ文档所建议的,我使用“Artifacts”菜单设置要在构建时生成的JAR工件 JAR似乎构建正确,但它没有。问题是:jar中不包含来自
- 仅包含“main”类的主模块
- 一个库模块,其中包含“做事情”的实际代码(此模块还包括并使用maven库)
<component name="ArtifactManager">
<artifact type="jar" build-on-make="true" name="delta.desktoptools.manifestgenerator:jar">
<output-path>$PROJECT_DIR$/out/artifacts</output-path>
<root id="archive" name="delta.desktoptools.manifestgenerator.jar">
<element id="module-output" name="delta.desktoptools.manifestgenerator" />
<element id="module-output" name="delta.desktoptools.lib" /> <!-- This doesn't get included :( -->
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/com/github/javaparser/javaparser-core/2.0.0/javaparser-core-2.0.0.jar" path-in-jar="/" />
</root>
</artifact>
</component>
$PROJECT\u DIR$/out/artifacts
编辑:我的工件配置的屏幕,为了更清晰。正如您所看到的,我的库模块的编译输出包含在工件中,但在最终的JAR中不存在。
您是使用intellij制作Jar还是依赖maven任务 如果您依赖于pom,那么您需要添加包含依赖项的构建内容,如下所述 好的,我解决了 我使用的是JDK1.7.x,IntelliJ工件生成器肯定与它有一些不兼容/bug(奇怪,因为我很确定工件生成器比JDK1.7早了很多,但不管怎样) 切换到JDK1.8.x解决了这个问题(或者它触发了项目的“深度清理”,或者某种有效地解决了这个问题的东西) 编辑:进一步测试后,发现JDK版本与此无关,我只是测试了各种东西,我认为解决方案就是这样,但事实并非如此。显然,问题是IntelliJ不“喜欢”我的图书馆O.O.的名字
我将它从
delta.desktoptools.lib
重命名为delta.desktoptools.library
,现在它被包括在内。很奇怪,但至少它起作用了。我想知道原因。也许以.lib结尾的包会触发某种名称约定/保留规则?我对IntelliJ不太熟悉,无法确定……我正在使用IntelliJ本身。老实说,我从未使用过maven,是否需要正确地使用它?IntelliJ中包含的工件功能是否有缺陷/不完整?我读过的所有文档似乎都建议IntelliJ应该包含所需的依赖项。。。但事实并非如此:(我认为IntelliJ将只添加项目中包含的依赖项,如果不添加,您将在“available Elements”面板中提供这些依赖项,因此您所需要做的就是将其拖动到左侧,以便将其包含在工件中(在本例中为JAR文件)我做了…我添加了一个截图和IntelliJ生成的脚本…对我来说它看起来是正确的:/@kuporific:你必须等待24小时才能接受你自己的答案…PS:我看到你对IntelliJ的问题非常积极,有什么线索可以解释为什么会发生这种情况吗?即使我解决了它,我也不知道确切的原因:D