提供了 Maven 依赖,它不存在于存储库中,而是存在于容器中
Provided Maven Dependency which does not exist in repository but in container
我必须使用一个库,所以我在我们的存储库中查找它并将它添加到依赖项中。启动 Weblogic 服务器时出现 DeploymentException(不明确的 Bean 名称)。
我发现这意味着我尝试注册同名的 Beans 两次或更多次。
然后我发现这个库已经由服务器(JEE Container)提供了。因此这个例外是有道理的。然后,我将依赖项的范围更改为 provided
,将版本更改为容器提供的版本。
但后来我遇到了构建错误,因为该版本无法解决依赖关系。我手动检查了我们的 repo,发现这是真的。
- 容器提供的版本:1.0.4
- repo 中存在的版本:1.0.7
我该如何解决这个问题?我只想告诉 Maven 它应该使用部署时将存在的库。并忽略它在编译期间不可用的事实。 (如果可能的话)
我认为您误解了 "provided" 的某些方面。
将依赖作为 "provided" 意味着它仅用于编译而不是打包到您的 war/ear 中。这意味着如果依赖项在存储库中不存在,则将其指定为 "provided" 是没有意义的。
解决您的问题的通常方法是指定 1.0.7 版的依赖项,并确保您不调用 1.0.4 版中不存在的任何 class/method。
然后您的应用程序将针对 1.0.7 进行编译,但在大多数情况下可以使用 1.0.4 运行(请注意,Java 无法检查或知道包含的 jar 的版本 - 唯一的风险是1.0.7 与 1.0.4 有不同的接口,如果只更改数字的最后一部分,则不太可能。
我必须使用一个库,所以我在我们的存储库中查找它并将它添加到依赖项中。启动 Weblogic 服务器时出现 DeploymentException(不明确的 Bean 名称)。
我发现这意味着我尝试注册同名的 Beans 两次或更多次。
然后我发现这个库已经由服务器(JEE Container)提供了。因此这个例外是有道理的。然后,我将依赖项的范围更改为 provided
,将版本更改为容器提供的版本。
但后来我遇到了构建错误,因为该版本无法解决依赖关系。我手动检查了我们的 repo,发现这是真的。
- 容器提供的版本:1.0.4
- repo 中存在的版本:1.0.7
我该如何解决这个问题?我只想告诉 Maven 它应该使用部署时将存在的库。并忽略它在编译期间不可用的事实。 (如果可能的话)
我认为您误解了 "provided" 的某些方面。
将依赖作为 "provided" 意味着它仅用于编译而不是打包到您的 war/ear 中。这意味着如果依赖项在存储库中不存在,则将其指定为 "provided" 是没有意义的。
解决您的问题的通常方法是指定 1.0.7 版的依赖项,并确保您不调用 1.0.4 版中不存在的任何 class/method。
然后您的应用程序将针对 1.0.7 进行编译,但在大多数情况下可以使用 1.0.4 运行(请注意,Java 无法检查或知道包含的 jar 的版本 - 唯一的风险是1.0.7 与 1.0.4 有不同的接口,如果只更改数字的最后一部分,则不太可能。