我必须使用一个库,所以我在我们的存储库中查找它并将其添加到依赖项中。启动Weblogic服务器时,我得到了一个DeploymentException(不明确的Bean名称)。
我发现这意味着我尝试将名称相同的Beans注册两次或更多次。
然后我发现该库已经由服务器(JEE容器)提供。因此这种例外是有道理的。然后,我将依赖项的范围更改为provided
,将版本更改为容器提供的版本。
但后来我遇到了构建错误,因为依赖项无法通过该版本解决。我手动检查了我们的回购,发现这是真的。
如何解决此问题?我只是想告诉maven它应该使用部署时将存在的库。并忽略在编译期间它不可用的事实。 (如果这是可能的话)
答案 0 :(得分:1)
我认为你误解了"提供"。
的某些方面给予依赖"提供"意味着它仅用于编译但不包装到你的战争/耳中。这意味着将依赖关系指定为"提供"如果它不存在于存储库中。
解决问题的常用方法是使用版本1.0.7指定依赖项,并确保不调用版本1.0.4中不存在的任何类/方法。
然后你的应用程序将针对1.0.7进行编译,但是以1.0.4运行,这在大多数情况下都很好(请注意,Java无法检查或知道所包含的jar的版本 - 唯一的风险是1.0.7具有不同的接口如果只是数字的最后一部分改变了,则不大可能是1.0.4。