2016-12-07 6 views
1

ここでは、Eclipse(ネオン)IDEのJEE Vaadinプロジェクトと、gradleを使用するビルドシステムを示します。しかし、私たちはテストクラスに問題があります。もし私たちが戦闘/耳をグラブルで構築すれば、すべてが大丈夫です。テストクラスは戦争アーカイブの一部ではありません。eclipseとgradle:テストクラスをデプロイしない

しかし、私たちがEclipseの中からwildflyサーバーに耳のプロジェクトを展開したいのであれば、テストクラスは戦争アーカイブの一部であるようです。

... 
Caused by: com.google.common.util.concurrent.ExecutionError: com.google.common.util.concurrent.ExecutionError: java.lang.LinkageError: Failed to link com/coco_on/docFlow/vaadin/admin/TestAdminRoles (Module "deployment.DFl_EAR.ear.DFl_Vaadin.war:main" from Service Module Loader) 
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2201) 
    at com.google.common.cache.LocalCache.get(LocalCache.java:3937) 
    at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3941) 
    at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4824) 
    at org.jboss.weld.util.cache.LoadingCacheUtils.getCacheValue(LoadingCacheUtils.java:49) 
    at org.jboss.weld.resources.DefaultReflectionCache.getBackedAnnotatedTypeAnnotationSet(DefaultReflectionCache.java:169) 
    at org.jboss.weld.annotated.slim.backed.BackedAnnotatedType.getAnnotations(BackedAnnotatedType.java:112) 
    at org.jboss.weld.annotated.slim.backed.BackedAnnotatedType.getAnnotation(BackedAnnotatedType.java:98) 
    at org.jboss.weld.bootstrap.BeanDeployer.processPriority(BeanDeployer.java:105) 
    at org.jboss.weld.bootstrap.BeanDeployer.processAnnotatedTypes(BeanDeployer.java:174) 
    at org.jboss.weld.bootstrap.BeanDeployment.createTypes(BeanDeployment.java:224) 
    at org.jboss.weld.bootstrap.WeldStartup.startInitialization(WeldStartup.java:381) 
    at org.jboss.weld.bootstrap.WeldBootstrap.startInitialization(WeldBootstrap.java:76) 
    at org.jboss.as.weld.WeldStartService.start(WeldStartService.java:92) 
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948) 
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881) 
    ... 3 more 
Caused by: java.lang.NoClassDefFoundError: com/vaadin/testbench/TestBenchTestCase 
... 

TestAdminRolesは、我々のテストクラスの一つとTestBenchTestCaseテストフレームワーク(Vaadinテストベンチ)で必要なクラスの一つです:耳を展開しながら、ので、我々は次のようにいくつかのエラーを取得します。しかし、このテストフレームワークは見つからないだろうし、これもOKだ。なぜなら、このライブラリを耳/戦争にリンクさせたくないからだ。

我々はまた、この記事を読んだことがある:https://stackoverflow.com/a/9820317/1465758

をだから我々は、展開からsrc/test/ディレクトリを削除し、テストソースディレクトリに別のbinディレクトリを設定しています。しかし成功なし。上記のエラーは依然として存在します。

そして、私の質問は次のとおりです:eclipseがコンパイルしたテストクラスをwarファイルに入れないように、どうすればeclipseを設定できますか?

答えて

0

テストソース用のソースフォルダの出力フォルダを変更し、テストディレクトリを展開アセンブリから削除する必要があります。

これはbuild.gradleに追加する必要があります。 、

eclipse { 
    // change output dir of the sourcefolders 
    classpath.file.whenMerged { 
     entries.findAll { it instanceof org.gradle.plugins.ide.eclipse.model.SourceFolder }.each { 
      it.output = 'build/eclipse/' + (it.path.startsWith('src/test') ? 'output-test' : 'output') 
     } 
    } 

    // removes test dirs from deployment assemble 
    wtp.component.file.whenMerged { 
     wbModuleEntries.removeIf { 
      it instanceof org.gradle.plugins.ide.eclipse.model.WbResource && it.sourcePath.startsWith('/src/test') 
     } 
    } 
} 

Code Source(適用小さい変化)は、この例で
非テスト源から出力ディレクトリも変更される(必要-plugin eclipseも適用される)すべての出力ディレクトリそのGradleのbuildディレクトリにあります。

関連する問題