【问题标题】:Spring boot include transitive dependenciesSpring Boot 包含传递依赖
【发布时间】:2016-03-01 15:13:09
【问题描述】:

这是我的项目之间的关系:
Spring Boot 项目 A -> 项目 B -> 项目 C
当我运行 Maven:install 时,我想在我的 lib 文件夹中拥有来自项目 B 和项目 C 的所有依赖项。
问题是,现在我只有项目 A 的依赖项...

我只是将spring-boot-maven-plugin 作为构建配置,没有任何参数...

【问题讨论】:

  • 当您在项目 B 和 C 上运行 maven install 时,构建的结果将存储在本地 maven repo 中,因此您可以在项目 A 的 POM 中将其作为正常依赖项使用。这就是你想要的吗?
  • 是的,这就是我正在做的事情。我首先在项目 C 上运行 maven install,然后在项目 B 上,最后在项目 A 上运行。但是当我查看项目 A 的 lib 文件夹(战争)时,我没有找到项目 C 的依赖项。我看到项目 C,但是不是依赖...
  • 你能添加你的POM配置吗?我认为我们需要看到它才能真正帮助您。您是否在“提供”范围内做任何事情,这意味着期望容器在运行时提供文件?
  • 你用的是什么版本的Maven
  • 你应该使用 maven 2.0 或更高版本

标签: java spring maven spring-boot spring-boot-maven-plugin


【解决方案1】:

您应该使用 maven 2.0 或更高版本来导入您的传递依赖项。 B 和 C 中的依赖项不应具有“已提供”范围,否则 maven 不会导入它们,认为服务器会提供它们

【讨论】:

    【解决方案2】:

    我终于发现我的错误了... 在项目 C 的 pom 中,我在system 范围内有一个依赖项,系统路径类似于${basedir}/my/path/librairy.jar。问题是,当我打包项目 B 时,Maven 想要这个库的绝对路径。我在 maven 的日志中看到了这样的警告。

    解决方案很简单,我将路径更改为绝对路径,一切顺利!未打包的系统库除外。我会把它放在我们的 Nexus 上,它会没事的。

    【讨论】:

      猜你喜欢
      • 2018-10-21
      • 2017-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-09
      • 1970-01-01
      • 2021-02-21
      相关资源
      最近更新 更多