使用 weceem 插件在 Grails 中创建可部署 war

Create deployable war in Grails with weceem plugin

我将 GGTS 3.6.4 与 Grails 2.4.5、Weceem 1.3 和 Java 1.8u40 一起使用。 我使用 weceem 插件在 Grails 中创建了一个 Web 应用程序,当我使用命令 grails run-app.

启动该应用程序时一切正常

我试图从这个项目创建一个可部署的 war,但每次我安装 war 时只显示一个空白页面。 war 甚至不包含 index.html 等。

然后我尝试创建一个新的 Grails 项目,包括 weceem 1.3 插件并执行命令 grails run war。结果是一样的。我只显示了一个空白页面。当我使用命令 run-app 时一切正常.....

|Done creating WAR target\NaturlichWeb-0.1.war
|Running Grails application
Error |
SLF4J: Class path contains multiple SLF4J bindings.
Error |
SLF4J: Found binding in [jar:file:/C:/Users/Xeno/Desktop/GGTS_new/grails-2.4.5/dist/grails-plugin-log4j-2.4.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
Error |
SLF4J: Found binding in [jar:file:/C:/Users/Xeno/Desktop/GGTS_new/workspace/NaturlichWeb/target/work/tomcat/webapps/NaturlichWeb/WEB-INF/lib/grails-plugin-log4j-2.4.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
Error |
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
Error |
SLF4J: Actual binding is of type [org.slf4j.impl.GrailsSlf4jLoggerFactory]
Weceem: Initializing ehcache with default weceem ehcache.xml from plugin resource: class path resource [weceem-default-ehcache.xml]
Configuring Spring Security Core ...
... finished configuring Spring Security Core
2015-04-02 11:21:13,986 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport  - HHH000389: Unsuccessful: alter table tag_links drop constraint FK_lmil1jg72pjc8ei5p6kk5g9un if exists
2015-04-02 11:21:14,002 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport  - Tabelle "TAG_LINKS" nicht gefunden
Table "TAG_LINKS" not found; SQL statement:
alter table tag_links drop constraint FK_lmil1jg72pjc8ei5p6kk5g9un if exists [42102-176]
2015-04-02 11:21:14,002 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport  - HHH000389: Unsuccessful: alter table user_role drop constraint FK_it77eq964jhfqtu54081ebtio if exists
2015-04-02 11:21:14,002 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport  - Tabelle "USER_ROLE" nicht gefunden
Table "USER_ROLE" not found; SQL statement:
alter table user_role drop constraint FK_it77eq964jhfqtu54081ebtio if exists [42102-176]
2015-04-02 11:21:14,002 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport  - HHH000389: Unsuccessful: alter table user_role drop constraint FK_apcc8lxk2xnug8377fatvbn04 if exists
2015-04-02 11:21:14,002 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport  - Tabelle "USER_ROLE" nicht gefunden
Table "USER_ROLE" not found; SQL statement:
alter table user_role drop constraint FK_apcc8lxk2xnug8377fatvbn04 if exists [42102-176]
2015-04-02 11:21:14,002 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport  - HHH000389: Unsuccessful: alter table wcm_content drop constraint FK_1i8ibd0dm67mut0hh09oqt452 if exists
2015-04-02 11:21:14,002 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport  - Tabelle "WCM_CONTENT" nicht gefunden
Table "WCM_CONTENT" not found; SQL statement:
alter table wcm_content drop constraint FK_1i8ibd0dm67mut0hh09oqt452 if exists [42102-176]
2015-04-02 11:21:14,002 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport  - HHH000389: Unsuccessful: alter table wcm_content drop constraint FK_9c59e0m1eb1xaeoy5h95xlyme if exists
2015-04-02 11:21:14,002 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport  - Tabelle "WCM_CONTENT" nicht gefunden
Table "WCM_CONTENT" not found; SQL statement:
alter table wcm_content drop constraint FK_9c59e0m1eb1xaeoy5h95xlyme if exists [42102-176]
2015-04-02 11:21:14,002 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport  - HHH000389: Unsuccessful: alter table wcm_content drop constraint FK_c9u6eo21g7eku09byvrsjjm0s if exists
2015-04-02 11:21:14,002 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport  - Tabelle "WCM_CONTENT" nicht gefunden
Table "WCM_CONTENT" not found; SQL statement:
alter table wcm_content drop constraint FK_c9u6eo21g7eku09byvrsjjm0s if exists [42102-176]
2015-04-02 11:21:14,002 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport  - HHH000389: Unsuccessful: alter table wcm_content drop constraint FK_sgkk9pe0yu0f2brjsl8j20svy if exists
2015-04-02 11:21:14,002 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport  - Tabelle "WCM_CONTENT" nicht gefunden
Table "WCM_CONTENT" not found; SQL statement:
alter table wcm_content drop constraint FK_sgkk9pe0yu0f2brjsl8j20svy if exists [42102-176]
2015-04-02 11:21:14,002 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport  - HHH000389: Unsuccessful: alter table wcm_content drop constraint FK_qs79ql67napbqpkvni2tw6ha0 if exists
2015-04-02 11:21:14,002 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport  - Tabelle "WCM_CONTENT" nicht gefunden
Table "WCM_CONTENT" not found; SQL statement:
alter table wcm_content drop constraint FK_qs79ql67napbqpkvni2tw6ha0 if exists [42102-176]
2015-04-02 11:21:14,002 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport  - HHH000389: Unsuccessful: alter table wcm_content drop constraint FK_8duair0heuk4lw83fsp2arsce if exists
2015-04-02 11:21:14,002 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport  - Tabelle "WCM_CONTENT" nicht gefunden
Table "WCM_CONTENT" not found; SQL statement:
alter table wcm_content drop constraint FK_8duair0heuk4lw83fsp2arsce if exists [42102-176]
2015-04-02 11:21:14,002 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport  - HHH000389: Unsuccessful: alter table wcm_related_content drop constraint FK_gunqv3de4a2aowjtox5l10ug4 if exists
2015-04-02 11:21:14,002 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport  - Tabelle "WCM_RELATED_CONTENT" nicht gefunden
Table "WCM_RELATED_CONTENT" not found; SQL statement:
alter table wcm_related_content drop constraint FK_gunqv3de4a2aowjtox5l10ug4 if exists [42102-176]
2015-04-02 11:21:14,002 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport  - HHH000389: Unsuccessful: alter table wcm_related_content drop constraint FK_oxph3lt0u4eteq81gnh2dljrd if exists
2015-04-02 11:21:14,002 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport  - Tabelle "WCM_RELATED_CONTENT" nicht gefunden
Table "WCM_RELATED_CONTENT" not found; SQL statement:
alter table wcm_related_content drop constraint FK_oxph3lt0u4eteq81gnh2dljrd if exists [42102-176]
2015-04-02 11:21:30,296 [localhost-startStop-1] ERROR export.SimpleSpaceImporter  - Unable to import Weceem ZIP file C:\Users\Xeno\AppData\Local\Temp\weceem-space-import4655006495072954442.tmp
: The following error occurred while executing this line:
jar:file:/C:/Users/Xeno/Desktop/GGTS_new/grails-2.4.5/lib/org.apache.ant/ant/jars/ant-1.8.4.jar!/org/apache/tools/ant/antlib.xml:37: Problem: failed to create task or type componentdef
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any <presetdef>/<macrodef> declarations have taken place.
    at org.apache.tools.ant.ProjectHelper.addLocationToBuildException(ProjectHelper.java:508)
    at org.apache.tools.ant.taskdefs.Definer.loadAntlib(Definer.java:434)
    at org.apache.tools.ant.taskdefs.Definer.execute(Definer.java:281)
    at org.apache.tools.ant.ComponentHelper.checkNamespace(ComponentHelper.java:790)
    at org.apache.tools.ant.ComponentHelper.getDefinition(ComponentHelper.java:260)
    at org.apache.tools.ant.ComponentHelper.createComponent(ComponentHelper.java:237)
    at org.apache.tools.ant.ComponentHelper.createComponent(ComponentHelper.java:216)
    at org.apache.tools.ant.UnknownElement.makeObject(UnknownElement.java:414)
    at org.apache.tools.ant.UnknownElement.maybeConfigure(UnknownElement.java:160)
    at org.weceem.export.SimpleSpaceImporter.execute(SimpleSpaceImporter.groovy:34)
    at org.weceem.services.WcmImportExportService$_importSpace_closure1.doCall(WcmImportExportService.groovy:24)
    at org.grails.datastore.gorm.GormStaticApi.withTransaction(GormStaticApi.groovy:815)
    at org.grails.datastore.gorm.GormStaticApi.withTransaction(GormStaticApi.groovy:715)
    at org.weceem.services.WcmImportExportService.importSpace(WcmImportExportService.groovy:20)
    at org.weceem.services.WcmContentRepositoryService.importSpaceTemplate(WcmContentRepositoryService.groovy:430)
    at org.weceem.services.WcmContentRepositoryService$_createSpace_closure7.doCall(WcmContentRepositoryService.groovy:384)
    at org.grails.datastore.gorm.GormStaticApi.withTransaction(GormStaticApi.groovy:815)
    at org.grails.datastore.gorm.GormStaticApi.withTransaction(GormStaticApi.groovy:715)
    at org.weceem.services.WcmContentRepositoryService.createSpace(WcmContentRepositoryService.groovy:364)
    at org.weceem.services.WcmContentRepositoryService$_createDefaultSpace_closure3.doCall(WcmContentRepositoryService.groovy:210)
    at org.weceem.services.WcmContentRepositoryService.withPermissionsBypass(WcmContentRepositoryService.groovy:1606)
    at org.weceem.services.WcmContentRepositoryService.createDefaultSpace(WcmContentRepositoryService.groovy:209)
    at WeceemGrailsPlugin$_closure2.doCall(WeceemGrailsPlugin.groovy:117)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: jar:file:/C:/Users/Xeno/Desktop/GGTS_new/grails-2.4.5/lib/org.apache.ant/ant/jars/ant-1.8.4.jar!/org/apache/tools/ant/antlib.xml:37: Problem: failed to create task or type componentdef
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any <presetdef>/<macrodef> declarations have taken place.
    at org.apache.tools.ant.UnknownElement.getNotFoundException(UnknownElement.java:484)
    at org.apache.tools.ant.UnknownElement.makeObject(UnknownElement.java:416)
    at org.apache.tools.ant.UnknownElement.maybeConfigure(UnknownElement.java:160)
    at org.apache.tools.ant.taskdefs.Antlib.execute(Antlib.java:146)
    at org.apache.tools.ant.taskdefs.Definer.loadAntlib(Definer.java:432)
    ... 25 more
--- Nested Exception ---
jar:file:/C:/Users/Xeno/Desktop/GGTS_new/grails-2.4.5/lib/org.apache.ant/ant/jars/ant-1.8.4.jar!/org/apache/tools/ant/antlib.xml:37: Problem: failed to create task or type componentdef
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any <presetdef>/<macrodef> declarations have taken place.
    at org.apache.tools.ant.UnknownElement.getNotFoundException(UnknownElement.java:484)
    at org.apache.tools.ant.UnknownElement.makeObject(UnknownElement.java:416)
    at org.apache.tools.ant.UnknownElement.maybeConfigure(UnknownElement.java:160)
    at org.apache.tools.ant.taskdefs.Antlib.execute(Antlib.java:146)
    at org.apache.tools.ant.taskdefs.Definer.loadAntlib(Definer.java:432)
    at org.apache.tools.ant.taskdefs.Definer.execute(Definer.java:281)
    at org.apache.tools.ant.ComponentHelper.checkNamespace(ComponentHelper.java:790)
    at org.apache.tools.ant.ComponentHelper.getDefinition(ComponentHelper.java:260)
    at org.apache.tools.ant.ComponentHelper.createComponent(ComponentHelper.java:237)
    at org.apache.tools.ant.ComponentHelper.createComponent(ComponentHelper.java:216)
    at org.apache.tools.ant.UnknownElement.makeObject(UnknownElement.java:414)
    at org.apache.tools.ant.UnknownElement.maybeConfigure(UnknownElement.java:160)
    at org.weceem.export.SimpleSpaceImporter.execute(SimpleSpaceImporter.groovy:34)
    at org.weceem.services.WcmImportExportService$_importSpace_closure1.doCall(WcmImportExportService.groovy:24)
    at org.grails.datastore.gorm.GormStaticApi.withTransaction(GormStaticApi.groovy:815)
    at org.grails.datastore.gorm.GormStaticApi.withTransaction(GormStaticApi.groovy:715)
    at org.weceem.services.WcmImportExportService.importSpace(WcmImportExportService.groovy:20)
    at org.weceem.services.WcmContentRepositoryService.importSpaceTemplate(WcmContentRepositoryService.groovy:430)
    at org.weceem.services.WcmContentRepositoryService$_createSpace_closure7.doCall(WcmContentRepositoryService.groovy:384)
    at org.grails.datastore.gorm.GormStaticApi.withTransaction(GormStaticApi.groovy:815)
    at org.grails.datastore.gorm.GormStaticApi.withTransaction(GormStaticApi.groovy:715)
    at org.weceem.services.WcmContentRepositoryService.createSpace(WcmContentRepositoryService.groovy:364)
    at org.weceem.services.WcmContentRepositoryService$_createDefaultSpace_closure3.doCall(WcmContentRepositoryService.groovy:210)
    at org.weceem.services.WcmContentRepositoryService.withPermissionsBypass(WcmContentRepositoryService.groovy:1606)
    at org.weceem.services.WcmContentRepositoryService.createDefaultSpace(WcmContentRepositoryService.groovy:209)
    at WeceemGrailsPlugin$_closure2.doCall(WeceemGrailsPlugin.groovy:117)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Error |
org.weceem.export.ImportException: Uploaded file can't be unpacked. Check it and try again.
Error |
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
Error |

这似乎是核心问题:

failed to create task or type componentdef

如果你 google 使用你最喜欢的搜索引擎,你会发现一个常见的原因是同时拥有 Ant 1.7.x 和 1.8.x 罐子war 文件。 Grails 2.4.5 使用 Ant 1.8.4,但 Ant jar 的范围限定为不包含在 war 中 - 您是否在 BuildConfig.groovy 中添加了显式依赖项?

我的猜测是 Weceem 或它所依赖的插件之一具有 Ant 1.7 依赖性。如果这是问题所在,一旦您确定是哪个插件导致它被包含在内,您就应该能够为 Ant 1.7 添加一个排除项。或者您可以使用 grails.war.resources 在所有文件添加到 war 之前从暂存目录中删除多余的 jar。这在文档和 this Marc Palmer blog post 中有所描述,类似于

grails.war.resources = { stagingDir ->
    delete(file:"$stagingDir/WEB-INF/lib/ant-1.7.???.jar")
}