system
和provided
的范围-两者相似,但我想知道:
1)system
范围是否意味着依赖项将仅包含在运行时类路径中?
2)两者之间的classpath有何不同?定义的systempath
是否成为system
范围依赖项的类路径?
由于这是2个简短查询且紧密耦合,因此不会为他们发布2个问题。
答案 0 :(得分:1)
system
表示该元素将逐字添加到类路径中(即具有绝对路径),并且某人(管理员,程序包管理器)将JAR文件复制到systempath
所指向的位置。在本地Maven存储库中搜索其他依赖项。除此之外,它就像provided
。
不应使用这种依赖性。多年以前,这是一种简单的方法,无需使用mvn file:install
将JAR安装到类路径中,而无需将它们安装在本地Maven存储库中。
provided
意味着它将在应用程序运行时以某种方式位于类路径中。一个示例是一个像Tomcat这样的Web容器,它带来了许多HTTP支持类,例如Servlet
。这些类对安全性敏感,需要与构建容器的对象匹配。因此,您必须告诉Maven“请将其放在测试的类路径上,而不是放在WAR中,好吗?”。
另请参阅: