Java 将Maven存储库添加到Tomcat';s类路径
我和Maven和Tomcat一起工作。我必须部署的一些web应用程序使用了许多在Maven中标记为“提供”的依赖项。这些依赖关系的一个例子是spring上下文 因此,当我打包项目时,这些依赖项不包括在WAR文件的lib文件夹中。 因为这个,我越来越Java 将Maven存储库添加到Tomcat';s类路径,java,maven,tomcat,classpath,noclassdeffounderror,Java,Maven,Tomcat,Classpath,Noclassdeffounderror,我和Maven和Tomcat一起工作。我必须部署的一些web应用程序使用了许多在Maven中标记为“提供”的依赖项。这些依赖关系的一个例子是spring上下文 因此,当我打包项目时,这些依赖项不包括在WAR文件的lib文件夹中。 因为这个,我越来越 NoClassDefFoundError: org/springframework/context/ApplicationContext 我不能更改依赖项的范围,如果可能的话,我不想在WAR文件中包含依赖项JAR 如何将Maven存储库作为类路径添
NoClassDefFoundError: org/springframework/context/ApplicationContext
我不能更改依赖项的范围,如果可能的话,我不想在WAR文件中包含依赖项JAR
如何将Maven存储库作为类路径添加到Tomcat,以便它能够解决所有“提供的”依赖关系?没有将JAR复制到Tomcat的lib文件夹
我在catalina.properties中尝试了shared.loader属性,但它不能递归地工作:我必须将每个JAR路径添加到属性的值中。当应用服务器或容器已经有依赖项时,它会被标记为提供的依赖项,并且您不必将其放入战争中。这是servlets jar的情况,但spring上下文不是这样。我认为更好的解决方案是将此依赖项标记为“compile”而不是“provided”。当应用程序服务器或容器已经有依赖项时,将其标记为provided,而不必将其投入战争。这是servlets jar的情况,但spring上下文不是这样。我认为更好的解决方案是将此依赖项标记为“compile”而不是“provided”。当应用程序服务器或容器已经有依赖项时,将其标记为provided,而不必将其投入战争。这是servlets jar的情况,但spring上下文不是这样。我认为更好的解决方案是将此依赖项标记为“compile”而不是“provided”。当应用程序服务器或容器已经有依赖项时,将其标记为provided,而不必将其投入战争。这是servlets jar的情况,但spring上下文不是这样。我认为更好的解决方案是将此依赖项标记为“compile”而不是“provided”。您在这里几乎没有选择。就像@Andres所说的,要么在战争中添加JAR,要么将它们添加到Tomcat的类路径(ie lib文件夹)
虽然拥有一个支持Maven的类加载器的概念很有趣,但是想象一下所有可能发生的jar版本冲突War A提供了对Lib v1.0.1的依赖项,War B提供了对Lib v2.1.0的依赖项,而Tomcat会默默地解决这些问题……您在这里几乎没有选择。就像@Andres所说的,要么在战争中添加JAR,要么将它们添加到Tomcat的类路径(ie lib文件夹)
虽然拥有一个支持Maven的类加载器的概念很有趣,但是想象一下所有可能发生的jar版本冲突War A提供了对Lib v1.0.1的依赖项,War B提供了对Lib v2.1.0的依赖项,而Tomcat会默默地解决这些问题……您在这里几乎没有选择。就像@Andres所说的,要么在战争中添加JAR,要么将它们添加到Tomcat的类路径(ie lib文件夹)
虽然拥有一个支持Maven的类加载器的概念很有趣,但是想象一下所有可能发生的jar版本冲突War A提供了对Lib v1.0.1的依赖项,War B提供了对Lib v2.1.0的依赖项,而Tomcat会默默地解决这些问题……您在这里几乎没有选择。就像@Andres所说的,要么在战争中添加JAR,要么将它们添加到Tomcat的类路径(ie lib文件夹)
虽然拥有一个支持Maven的类加载器的概念很有趣,但是想象一下所有可能发生的jar版本冲突War A提供了对Lib v1.0.1的依赖项,War B提供了对Lib v2.1.0的依赖项,Tomcat以静默方式解决这些问题……是的,这将是最好的选择。问题是我无法更改依赖项的范围。遗留项目是个麻烦事。您可以重新打包和重新部署项目,但不能更改依赖项的范围,因为它们是“遗留”项目?现在我很好奇……也许我误用了“遗产”这个词。并不是说我“不能”。由于一些奇怪的团队要求,我“不允许”更改范围。是的,这将是最好的选择。问题是我无法更改依赖项的范围。遗留项目是个麻烦事。您可以重新打包和重新部署项目,但不能更改依赖项的范围,因为它们是“遗留”项目?现在我很好奇……也许我误用了“遗产”这个词。并不是说我“不能”。由于一些奇怪的团队要求,我“不允许”更改范围。是的,这将是最好的选择。问题是我无法更改依赖项的范围。遗留项目是个麻烦事。您可以重新打包和重新部署项目,但不能更改依赖项的范围,因为它们是“遗留”项目?现在我很好奇……也许我误用了“遗产”这个词。并不是说我“不能”。由于一些奇怪的团队要求,我“不允许”更改范围。是的,这将是最好的选择。问题是我无法更改依赖项的范围。遗留项目是个麻烦事。您可以重新打包和重新部署项目,但不能更改依赖项的范围,因为它们是“遗留”项目?现在我很好奇……也许我误用了“遗产”这个词。并不是说我“不能”。由于一些奇怪的团队要求,我“不允许”更改范围。
mvn-Dmdep.outputFile=FILE dependency:build classpath
将以适合于