如何为Tomcat提供maven依赖项

Spi*_*der 1 tomcat maven

我正在尝试用Tomcat 7.0"包含"各种Jars /库(通常我将它们放在tomcat/lib目录中)以使Tomcat JSR 109兼容.

因此,我添加了一些依赖项并使它们成为"系统",希望Tomcat在启动时可以使用系统范围的依赖项.不幸的是,即使浏览我的依赖项列表中的包,显示了Tomcat正在寻找的所有类,但Tomcat似乎无法访问它们或知道它们的位置.

请指教...

<dependency>
    <groupId>com.sun.xml</groupId>
    <artifactId>jaxws-rt</artifactId>
    <version>2.0EA3</version>
    <scope>system</scope>
    <systemPath>${path.jaxwsrt}</systemPath>
</dependency>
Run Code Online (Sandbox Code Playgroud)

添加注意:我想要Tomcat本身,而不仅仅是它正在运行的应用程序来访问它.例如:

  • Spring Tomcat可监视类加载器
  • 用于Apache Commons日志记录和Web服务支持的Catalina扩展

And*_*cer 6

这不是系统范围的意思.系统范围对Maven说:"这种依赖是我系统的一部分.当我发送工件时你不需要捆绑它,因为它已经存在于系统中.在编译或运行测试时你不需要下载它,因为我在这里给你通往它的道路." (您必须为系统范围依赖项提供路径.)

使JAR可用于Tomcat的标准方法是将它们放入WAR中.如果将范围设置为"compile"或"runtime",则会发生这种情况.

另一种方法是将JAR放入Tomcat的共享目录中,并将其范围设置为"提供".如果你这样做,你就是在运行一个非标准的Tomcat发行版,而你需要一个进程来管理它(否则你有一天会遇到麻烦,因为人们不理解为什么你的应用程序不会在vanilla Tomcat上运行安装).

关于Maven范围的简短提醒:

compile ="我在编译时,编译测试时,运行测试时,以及执行项目时都需要这个,并且需要将它捆绑在可交付项中,因为它不在运行时环境中".

runtime ="我的代码将在没有这个的情况下进行编译,但它会在运行时查找它,包括运行测试时,并且在运行时环境中没有提供它,所以你可以将它捆绑在交付项中."

提供="我的代码需要这个来编译,并且在运行测试和生产时,所以我需要在类路径上进行编译和测试,但是你不需要捆绑它,因为运行时环境提供它."