2017-01-22 16 views
1

私は2つのプロジェクトを持っています:共有JARを含むMavenはコンパイルされますが、リアルタイムでは機能しません

ProjectAとSharedProject

私はPROJECTAで、次のPOMファイルを使用します。

<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からの輸入を使用してください):

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

と共有プロジェクトのPOMは、このようになります私はそれを私のために続けています。私はエラーを取得する> MVN をインストールするとTomcat 上で実行されている - PROJECTA:

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

慣例に従い、Mavensの観点から '1.0.0-SNAPSHOT'のようなバージョンを使用してください。バージョン' SNAPSHOT-1.0.0'はリリースです!これは決して2度目にチェックされることはありません...したがって、初めてmvn installを実行すると、jarファイルはローカルキャッシュokに保存されますが、2回目も使用されるプロジェクトには何かが変更されたという通知はありません。それで、あなたは '' SNASPHOT''と呼ばれるものを使うべきです...代わりに '1.0.0-SNAPSHOT'のようなバージョン... .... – khmarbaise

答えて

0

スコープタグを依存関係宣言から削除すると、すべてが問題ありません。

スコープcompileは、この依存関係がコンパイル時にのみ使用されることをmavenに伝えます。例えば、それはMapStructで使用され、コンパイル段階でコードを生成し、その後は依存関係を必要としません。

+0

スコープコンパイルは省略できますが、結果に影響しませんscope 'compile 'はデフォルトです... – khmarbaise

+0

スコープタグを依存関係宣言から削除することは役に立たなかった – Urbanleg

関連する問題