【发布时间】:2017-03-13 20:55:04
【问题描述】:
我正在寻找一种将 spring-boot 应用程序部署为 nexus(我们公司的 maven 存储库)中的人工制品的能力。该应用程序本身运行良好,我不想将其重构为标准 Spring 应用程序。
问题如下。通过执行~> maven deploy,maven 很好地部署了target/transformation.excel.input-XXX.RELEASE.jar 存档。但是:
- 部署
jar很重量级 -
jar包含BOOT-INF/classes/com/ ...文件夹中的项目类。你可以在这里看到它:
从终端启动这个引导应用程序肯定很好,但在我的情况下它是不可接受的。
最重要的是
- 由于
jar-archive 的实际结构,第三个项目(依赖于此transformation.input.excel-artefact)看不到源类,编译器显示错误。
我相信有一些机会可以让 nexus(maven)-repository 的 spring-boot 工件更舒适。也许可能有一个 jar-plugin 解决方案,但我没有任何经验。
我会非常感谢协助/帮助如何解决它。因此,有时我必须从终端运行此应用程序,有时该应用程序可以用作功能提供者
对不起我的英语
问候
【问题讨论】:
-
所以在某种程度上,你的问题并不是关于关系,而是如何将 spring boot 的 jar 拆分为 "YourApp-withoutspringbootlibs.jar" + "springbootlibraries.jar" ?然后,您只需部署 YourApp-withoutspringbootlibs.jar ?
-
实际上你是对的。是的,我需要没有 spring-boot 库的带有源代码的 jar。通过执行mnv包,maven在目标文件夹中创建了两个文件。第一个是真正的 spring-boot jar,具有所有依赖项,并且由于结构原因,我的源无法访问。第二个是 XXX.jar.original,只包含源代码,没有任何依赖。
-
我想要第二个,但我不知道如何强制 maven 自己找到依赖项。我刚刚对其进行了测试,编译器很高兴。但是通过运行应用程序存在运行时异常。有人认为:“找不到第三方库”
-
在这种情况下有一个问题,我无法直接执行 [mvn deploy]。我必须删除第一个 jar 文件,然后重命名第二个文件(xxxx.jar.original -> xxx.jar),然后手动部署。最后,通过这种方式部署编译器很高兴,但没有任何依赖关系 l 通过执行应用程序接收异常。
-
您同时混合了 2 个问题。我建议您将您的问题改写为“Spring Boot:如何在单独的 jar 中使用 spring-libraries 构建可运行的 jar”。在你完成这项工作之前,你应该把 nexus 放在一边。一旦你有 2 个工作 jar,那么你可以找到在 nexus 中部署它们的最佳方法。
标签: spring maven spring-boot jar nexus