本文介绍了为gwt-user / dev提供gradle provideCompile会导致其他jar从WAR中消失的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



当包含GWT时,像

  

在 compile 部分列出的其他罐子也从WAR中消失。它可以快速检查(你可能不会组装整个战争)与

  gradle:依赖关系

并检查 providedCompile 部分。在我的情况下,它是 validation-api 作为gwt-user的子依赖。

  + --- com.google.gwt:gwt-user:2.5.1 
| + --- javax.validation:validation-api:1.0.0.GA
| \ --- org.json:json:20090211
+ --- com.google.gwt:gwt-dev:2.5.1
| \ --- org.json:json:20090211
\ --- javax.servlet:servlet-api:2.5

它是应用程序所必需的,它的jar被移除了,导致了WAR。



要坚持它们,我必须在构建中编写以下代码.gradle:

  providedCompile(com.google.gwt:gwt-user:$ gwtVersion){
transitive = false;
}
providesCompile(com.google.gwt:gwt-dev:$ gwtVersion){
transitive = false;
}

并且一切正常。


I assemble WAR for GWT application through gradle.

When GWT is included like

dependencies {
    compile "com.google.gwt:gwt-user:2.5.1"
    compile "com.google.gwt:gwt-dev:2.5.1"
    ...
}

then I have gwt-user.jar and gwt-dev.jar in resulting WAR file. They are not really needed and are big. If I delete these jars from WAR - application works well.

But when I try to assemble WAR without these jars inside using

dependencies {
    providedCompile "com.google.gwt:gwt-user:2.5.1"
    providedCompile "com.google.gwt:gwt-dev:2.5.1"
    ...
}

then the application cannot start in tomcat saying

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [application-context.xml]: Invocation of init method failed; nested exception is java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1482)

and other strange error messages.

How can I correctly exclude just gwt-user and gwt-dev jars from gradle build?

解决方案

Other jars that are listed in compile section did disappear from WAR too. It can be quickchecked (you may not assemble the whole war) with

gradle :dependencies

and checking providedCompile section. In my case it was validation-api as subdependency of gwt-user.

+--- com.google.gwt:gwt-user:2.5.1
|    +--- javax.validation:validation-api:1.0.0.GA
|    \--- org.json:json:20090211
+--- com.google.gwt:gwt-dev:2.5.1
|    \--- org.json:json:20090211
\--- javax.servlet:servlet-api:2.5

It is required by the app and its jar was removed resulting WAR.

To persist them, I had to write the following in build.gradle:

providedCompile ("com.google.gwt:gwt-user:$gwtVersion") {
    transitive = false;
}
providedCompile ("com.google.gwt:gwt-dev:$gwtVersion") {
    transitive = false;
}

and everything went ok.

这篇关于为gwt-user / dev提供gradle provideCompile会导致其他jar从WAR中消失的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

11-01 12:28