使用项目中的先前版本在库中提供依赖项

时间:2013-05-14 10:25:19

标签: java maven gradle dependency-management

如果库使用v3.0.1声明提供依赖于例如 servlet-api ;用户是否可以将2.5版用于其库,这将用于第三方Web应用程序?

换句话说:

mylib (srv 3.0.1)  <-- some_framework(srv 2.5)  <--  user_webapp (tomcat 6 or 7)

此外:v2.5声明为 javax.servlet:servlet-api:2.5 ,版本v3.0.1声明为 javax.servlet:javax.servlet-api:3.0。 1 ,所以有区别。

some_framework 指定与mylib(例如3.0)中提供的定义不同的servlet-api依赖(例如2.5)会不会有问题?我假设由于范围提供(并且仅在编译时可用),依赖工具(mvn,gradle ...)将不会在 some_framework 中下载它们,并且它们具有(并且被允许)手动声明依赖。

(是的,我知道3.0和2.5之间的差异,这不是一个问题。我也假设一切都正确编译等等。我只是对maven如何编译 some_framework 感兴趣,哪个依赖:2.5或3?)。

1 个答案:

答案 0 :(得分:0)

让我回答我自己的问题,因为[SO]从未帮助过那些棘手的问题:)

我创建了简单的maven项目(将作为 some_framework )。它取决于jodd-servlet mylib ),它将servlet 3.0.1列为提供的依赖项。我跑的时候

mvn dependency:resolve

我没有在依赖列表中看到servlet。现在,如果当前项目(即 some_framework )将servlet v2.5列为依赖项;然后,如果我再次运行相同的命令,我看到只依赖于2.5。

因此,我们可以说提供的依赖关系不透明或导出。

相关问题