我是Maven的新手,我没有找到解决以下问题的正确答案。
例如,我有我的项目依赖的库:log4j,连接器j,servlet api,junit,struts等。当我只使用Tomcat时,我可以将这个jar放到%CATALINA_HOME%\lib
文件夹中使用它们。
但是当Maven
出现时,我可以为所有依赖项及其范围配置pom.xml
。
如果我这样做 - 我可以从%CATALINA_HOME%\lib
文件夹中删除lib吗?如果我可以Tomcat
知道在哪里可以找到这个第三方罐子?
在%CATALINA_HOME%\lib
文件夹中使用tomcat-native libs(tomcat-util,tomcat-juli,jasper等)并指定pom.xml
中的其他库只是一个好习惯吗?
答案 0 :(得分:1)
拥有tomcat-native libs是一个好习惯 (%tomcat-util,tomcat-juli,jasper等)在%CATALINA_HOME%\ lib文件夹中 并在pom.xml中指定其他库?
是的,这确实是一种非常好的做法。这样,您的Tomcat安装保持不变,您可以使用它来部署另一个webapp(可能有另一组依赖项,或者在另一个版本中具有相同的依赖项)。
Maven将自动将依赖项放在最终war文件的WEB-INF/lib
内,而Tomcat(以及其他所有服务器)将在此目录中查找librairies。
顺便说一下,我注意到你在帖子中提到了servlet-api。这种特殊的依赖是由Tomcat提供的,这意味着你不需要在最后的战争中包含它。使用Maven,这意味着您需要将<scope>provided</scope>
添加到此依赖项。
答案 1 :(得分:1)
如果我这样做 - 我可以从%CATALINA_HOME%\ lib文件夹中删除库吗?
是
如果可以,那么Tomcat如何知道在哪里可以找到这个第三方罐子?
类加载器知道它必须查看war/WEB-INF/lib Directory
。
在%CATALINA_HOME%\ lib文件夹中使用tomcat-native libs(tomcat-util,tomcat-juli,jasper等)并在pom.xml中指定其他库是一个好习惯吗?
是的。