2017-01-22 1 views
1

У меня есть 2 проекта:Maven, включая общую банку, компилируется, но не работает в режиме реального времени

ProjectA And SharedProject.

Я использую следующий файл POM в Projecta:

<dependency> 
     <groupId>MyGroup</groupId> 
     <artifactId>shared</artifactId> 
     <version>SNAPSHOT-1.0.0</version>   
     <scope>compile</scope>   
    </dependency> 
<dependency> 

И П совместно используемого проекта выглядит следующим образом:

<modelVersion>4.0.0</modelVersion> 
<groupId>MyGroup</groupId> 
<artifactId>shared</artifactId> 
<version>SNAPSHOT-1.0.0</version> 
<name>shared</name> 
<packaging>jar</packaging> 

Моего Projecta компилирует (и на самом деле использовать импорт из SharedProject) поэтому я получил это для меня.

Проблемы после запуска: Projecta -> MVN установить и работают на коте я получаю ошибку:

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) 

Это не обретенной класс находится в SharedProject и ссылки в Projecta web.xml файл. вот ProjectA web.xml конкретный код ссылки:

<filter> 
    <filter-name>cors</filter-name> 
    <filter-class>com.mygroup.shared.filter.common.CorsFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>cors</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 
+0

Следуйте соглашениям и используйте версию типа 1.0.0-SNAPSHOT', с точки зрения Mavens версия 'SNAPSHOT-1.0.0' является выпуском! который никогда не будет проверяться во второй раз ... Итак, в первый раз, когда вы выполняете 'mvn install', банку будет храниться в локальном кэше нормально ... во второй раз, но ваш проект, который его использует, не будет информирован о том, что что-то изменилось , Вот почему вы должны использовать так называемый «SNASPHOT» ... что означает версию типа «1.0.0-SNAPSHOT» .... вместо этого ... – khmarbaise

ответ

0

Удалить из области видимости тег объявления зависимостей, и все будет в порядке.

Область применения compile говорит maven, что эта зависимость будет использоваться только во время компиляции. Например, он используется в MapStruct, который генерирует код на этапе компиляции, и после этого нет необходимости в зависимостях.

+0

Скомпилировать область можно, но не повлияет на область возникновения результата 'compile 'по умолчанию ... – khmarbaise

+0

Удаление тега области из объявления зависимости не помогло – Urbanleg

Смежные вопросы