gradle providedCompile for gwt-user/dev causes other jars to disappear from WAR

旧时模样 提交于 2020-01-24 18:40:11

问题


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?


回答1:


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.



来源:https://stackoverflow.com/questions/22807307/gradle-providedcompile-for-gwt-user-dev-causes-other-jars-to-disappear-from-war

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!