我正在创建一个没有 GUI 的 java 命令行项目。该项目使用任意数量的开源项目:Spring、Logback、Commons CLI 等。当我开始考虑打包时,我想象它会以 zip 文件的形式出现,可以分解到 jar 中,并带有一个 lib 子目录, 和依赖库中的 jars。
adapter.jar
/lib/dependencyA.jar
/lib/dependencyB.jar
etc.
我一直在玩 Maven Assembly,但它仍然没有像上面那样出现,而且我还没有找到任何生成上述结构的示例。有可能这样做吗?此外,具有多模块结构增加了另一层我无法解决的复杂性,因为组装模块无法找到核心模块作为依赖项。这是我的第一个 Maven 项目,所以我还在学习 Maven 的工作原理。我已经阅读了 Sonatype 这本书,但错过了一些东西,因为即使使用“最佳实践”部分也无法解决缺失的依赖关系。我见过的示例通常涉及合并到一个超级可执行 jar 中,其中一些使用 Shade 项目,一些不使用。我的问题是,做一个包含 Spring 等第三方库的 uber jar 是个好主意吗?还是我应该坚持我原来的 zip/lib 子目录计划?