将Maven与Tomcat一起使用时,在哪里放置第三方库?

时间:2015-02-20 21:58:48

标签: java maven tomcat

我是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中的其他库只是一个好习惯吗?

2 个答案:

答案 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中指定其他库是一个好习惯吗?

  

是的。