【发布时间】:2012-06-10 08:26:11
【问题描述】:
我正在使用 maven 构建一个在 Tomcat 中运行的 Java Web 应用程序。某些 JAR 文件(例如 mail-1.4.1.jar 和数据库驱动程序)已放在 tomcat/lib 目录中,并且 maven 依赖项设置为“已提供”。 (我不是 100% 确定原因,但我认为这与 JNDI 有关。)
现在我在我尝试使用mvn exec:java 执行的同一个Maven 项目中构建了一个独立的可执行Java 程序。不出所料,它找不到mail.jar,我收到错误java.lang.NoClassDefFoundError: javax/mail/Session
如何为独立的 Java 程序指定 javax.mail scope="runtime" 同时仍然为 Tomcat 应用程序“提供”?我必须使用 Maven 配置文件吗?如果是这样,我在哪里可以找到有关其工作原理的有用文档(配置文件的依赖项是附加的还是它们会覆盖默认的依赖项等?)
【问题讨论】:
-
如果你有两个不同意图的 web 应用程序和一个 java 应用程序的执行,你应该有两个不同的 maven 模块。一个用于 web 应用程序,一个用于命令行应用程序。否则你会遇到麻烦。