【发布时间】:2019-10-06 19:59:01
【问题描述】:
我创建了两个 Spring Boot 应用程序 - foo 和 bar。然后我使用命令mvn clean package 为bar 创建了一个jar 文件,从而生成bar-0.0.1-SNAPSHOT.jar 文件。使用this post 中提到的mvn install:install-file -Dfile=target/bar-0.0.1-SNAPSHOT.jar -DpomFile=pom.xml,我将此jar 安装到我的本地.m2 存储库中。
然后在foo的pom.xml中,我添加了如下依赖:
<dependency>
<groupId>com.foobarcompany</groupId>
<artifactId>bar</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
现在,当我从 STS 运行 foo 应用程序时,它运行正常,但如果我尝试使用 mvn spring-boot:run 从终端运行它或尝试使用 mvn clean package 打包 foo,我会收到以下错误:
package com.foobarcompany.bar.service does not exist
这是指我从foo 应用程序调用的bar 应用程序中存在的服务。
据我了解,依赖项未正确添加,它在 STS 中工作的原因是因为两个应用程序都在同一个工作区下。
我什至尝试添加this answer 中提到的本地 maven 存储库,但即使这样似乎也不起作用。或者我做错了。
谁能告诉我将本地 jar 添加到另一个应用程序的正确方法是什么?
【问题讨论】:
-
您应该运行 mvn install 将此 JAR 发布到您的本地 .m2。使用 mvn deploy 任务将其发布到您具有写入权限的远程存储库。
-
您不能将 Spring Boot 应用程序用作依赖项。如果您需要共享代码,请创建一个单独的模块名称,例如
commons-code或类似名称,并将其用作依赖项。 -
@duffymo 我已经从 bar 运行 mvn install,它在我的本地 .m2 中可用。但是当我在 foo 中添加这个依赖然后运行 mvn install 时,它找不到 bar 中定义的服务
-
@khmarbaise 我可以将带有打包战争的现有 Spring Spring Boot 应用程序转换为多模块应用程序吗?另外,如果有单独的项目baz需要使用bar中定义的服务,是否可以使用这个模块?
-
当然可以……
标签: java maven spring-boot jar