Ich habe 2 Projekte:Maven mit einem gemeinsamen Glas kompiliert, aber nicht in Echtzeit
ProjectA und SharedProject.
Ich verwende die folgende POM-Datei in ProjectA:
<dependency>
<groupId>MyGroup</groupId>
<artifactId>shared</artifactId>
<version>SNAPSHOT-1.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
Und die pom des gemeinsamen Projekts sieht wie folgt aus:
<modelVersion>4.0.0</modelVersion>
<groupId>MyGroup</groupId>
<artifactId>shared</artifactId>
<version>SNAPSHOT-1.0.0</version>
<name>shared</name>
<packaging>jar</packaging>
Mein ProjectA compiliert (und Sie tatsächlich Einfuhren aus SharedProject) also habe ich das für mich gemacht.
Problem ist nach dem Laufen: ProjectA -> MVN installieren und läuft auf tomcat ich einen Fehler von:
SEVERE: Exception starting filter cors
java.lang.ClassNotFoundException: com.mygroup.shared.filter.common.CorsFilter
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:532)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:514)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:142)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:107)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4775)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5452)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)
Diese nicht-gefunden-Klasse im SharedProject befindet und in ProjectA web.xml verwiesen Datei. Hier ist der spezifische Referenzcode ProjectA web.xml:
Befolgen Sie die Konventionen und verwenden Sie eine Version wie '1.0.0-SNAPSHOT' Ursache von Mavens Sicht die Version 'SNAPSHOT-1.0.0' ist ein Release! was wird nie ein zweites Mal überprüft ... Also das erste Mal, wenn Sie eine 'mvn installieren' das Glas wird in lokalen Cache ok .. das zweite Mal auch gespeichert, aber Ihr Projekt, das es verwendet wird nicht informiert, dass etwas geändert hat . Deshalb sollten Sie so genannte 'SNASPHOT's verwenden ... was eine Version wie' 1.0.0-SNAPSHOT' bedeutet .... stattdessen ... – khmarbaise