【问题标题】:Add local jar to pom.xml of Spring boot application将本地 jar 添加到 Spring Boot 应用程序的 pom.xml
【发布时间】:2019-10-06 19:59:01
【问题描述】:

我创建了两个 Spring Boot 应用程序 - foobar。然后我使用命令mvn clean packagebar 创建了一个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


【解决方案1】:

我已完成 mvn clean install 以将其发布到 .m2 文件夹。之后,我将其添加为依赖项(您已经完成了)。最后一步是在您的主类上添加 @ComponentScan(basePackages = { "com.foobarcompany.bar", "com.foobarcompany.foo" }) ,您的 @SpringBootApplication 放置在其中。我可以使用 mvn spring-boot:run 启动应用程序。这对我有用。

【讨论】:

  • 我之前在主类中添加了@ComponentScan(basePackages = "com.foobarcompany"),它应该同时选择了foo和bar。你的方法我也试过了,还是不行。
【解决方案2】:

你错过了artifactid、version和groupid,请使用下面的命令。

mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id>
-DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>

参考: https://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html

【讨论】:

  • mvn clean install 将 jar 安装到本地 .m2 文件夹
  • 如果我们在 pom 文件中使用命令,是否必须定义 artifactId、version 和 groupId?
猜你喜欢
  • 1970-01-01
  • 2014-11-10
  • 1970-01-01
  • 1970-01-01
  • 2020-10-18
  • 1970-01-01
  • 2016-01-21
  • 1970-01-01
  • 2013-12-22
相关资源
最近更新 更多