IntelliJ IDEA 构建不完整的 Grails 战争

Posted

技术标签:

【中文标题】IntelliJ IDEA 构建不完整的 Grails 战争【英文标题】:IntelliJ IDEA building incomplete Grails war 【发布时间】:2013-12-01 21:56:59 【问题描述】:

我开始使用 IntelliJ 进行 grails 开发,但无法按照 this answer 中描述的过程将新创建的 grails 应用程序制作和部署到本地或外部 Tomcat

Tomcat 中的管理器应用程序显示应用程序已启动并正在运行,但我在打开索引页面时总是得到 http 404。我注意到可以下载 index.gsp 文件 - 似乎 grails 没有正确初始化:

这些是我尝试过的版本:

IntelliJ IDEA 12.1.6 Ultimate Grails 2.1.1、2.2.4 和 2.3.2 Tomcat 7.0.47 和 6。

这些是我多次执行的详细步骤,即使在不同的计算机上,也总是得到相同的结果:

在 IntelliJ 中创建一个新的 grails 应用程序并启动默认运行配置 (grails) - 到目前为止一切正常。

设置部署到本地 Tomcat 服务器。我已经在 IntelliJ 中配置了应用程序服务器,使用 GrailsWeb 构面创建了一个工件(Web 应用程序:存档或 Web 应用程序:Exploded)并分配它进行部署。

启动本地应用服务器,IntelliJ 会报告工件部署成功

打开浏览器会出现404

为什么?我做错了什么?

一定是 IntelliJ 中的 grails 插件,因为我能够从 github 中提取示例 Java 应用程序 (spring-petclinic),然后在 Tomcat 中轻松运行它...

更新:

我注意到我可以使用“Make Grails Web archive”手动部署在目标下生成的战争。但是当我在out/...下对神器之战做同样的事情时,它就行不通了。

显然后一个没有正确生成:它在 META-INF 下缺少 MANIFEST.MF 并且在 WEB-INF 下也没有 grails.xml 和 grails-app!

能否请您看一下方面:有什么问题吗?

我尝试了许多工件配置,例如这个:

使用上述设置生成的目录结构:

将其与 grails 生成的 war 文件进行比较可以发现许多不同之处,例如index.gsp 位于根目录下,而不是在WEB-INF/grails-app 下。而且WEB-INF下也没有grails.xml

C:\prj\gtest5\out\artifacts\gtest5_war_exploded>tree /f
Auflistung der Ordnerpfade
Volumeseriennummer : 2842-D2F0
C:.
│   error.gsp
│   index.gsp
│
├───css
│       errors.css
│       main.css
│       mobile.css
│
├───dbdoc
│       _globalnav.gsp
│       _index.gsp
│       _overview-summary.gsp
│       _stylesheet.gsp
│
├───images
│   │   apple-touch-icon-retina.png
│   │   apple-touch-icon.png
│   │   favicon.ico
│   │   grails_logo.jpg
│   │   grails_logo.png
│   │   leftnav_btm.png
│   │   leftnav_midstretch.png
│   │   leftnav_top.png
│   │   spinner.gif
│   │   springsource.png
│   │
│   └───skin
│           database_add.png
│           database_delete.png
│           database_edit.png
│           database_save.png
│           database_table.png
│           exclamation.png
│           house.png
│           information.png
│           shadow.jpg
│           sorted_asc.gif
│           sorted_desc.gif
│
├───js
│   │   application.js
│   │
│   └───jquery
│           jquery-1.8.0.js
│           jquery-1.8.0.min.js
│
├───layouts
│       main.gsp
│
└───WEB-INF
    │   applicationContext.xml
    │   sitemesh.xml
    │
    ├───classes
    │   │   JQueryResourceTagLib$_closure1.class
    │   │   JQueryResourceTagLib$_closure2.class
    │   │   JQueryResourceTagLib$_closure2_closure4.class
    │   │   JQueryResourceTagLib$_closure2_closure5.class
    │   │   JQueryResourceTagLib$_closure2_closure6.class
    │   │   JQueryResourceTagLib$_closure2_closure7.class
    │   │   JQueryResourceTagLib$_closure3.class
    │   │   JQueryResourceTagLib.class
    │   │   JQueryService$_closure1.class
    │   │   JQueryService$_closure2.class
    │   │   JQueryService$_closure3.class
    │   │   JQueryService$_closure4.class
    │   │   JQueryService.class
    │   │   JQueryTagLib$_closure1.class
    │   │   JQueryTagLib$_closure1_closure6.class
    │   │   JQueryTagLib$_closure2.class
    │   │   JQueryTagLib$_closure3.class
    │   │   JQueryTagLib$_closure4.class
    │   │   JQueryTagLib$_closure5.class
    │   │   JQueryTagLib.class
    │   │   messages.properties
    │   │   messages_cs_CZ.properties
    │   │   messages_da.properties
    │   │   messages_de.properties
    │   │   messages_es.properties
    │   │   messages_fr.properties
    │   │   messages_it.properties
    │   │   messages_ja.properties
    │   │   messages_nl.properties
    │   │   messages_pl.properties
    │   │   messages_pt_BR.properties
    │   │   messages_pt_PT.properties
    │   │   messages_ru.properties
    │   │   messages_sv.properties
    │   │   messages_th.properties
    │   │   messages_zh_CN.properties
    │   │
    │   ├───grails
    │   │   └───plugin
    │   │       ├───cache
    │   │       │   │   BlockingCache.class
    │   │       │   │   Cacheable.class
    │   │       │   │   CacheBeanPostProcessor.class
    │   │       │   │   CacheConfigArtefactHandler$CacheConfigGrailsClass.class
    │   │       │   │   CacheConfigArtefactHandler$DefaultCacheConfigGrailsClass.class
    │   │       │   │   CacheConfigArtefactHandler.class
    │   │       │   │   CacheConfiguration.class
    │   │       │   │   CacheEvict.class
    │   │       │   │   CachePut.class
    │   │       │   │   CacheTagLib$_closure1.class
    │   │       │   │   CacheTagLib$_closure2.class
    │   │       │   │   CacheTagLib.class
    │   │       │   │   ConfigBuilder.class
    │   │       │   │   ConfigLoader$_sortConfigs_closure1.class
    │   │       │   │   ConfigLoader.class
    │   │       │   │   GrailsAnnotationCacheOperationSource$DefaultCacheKey.class
    │   │       │   │   GrailsAnnotationCacheOperationSource.class
    │   │       │   │   GrailsCache.class
    │   │       │   │   GrailsCacheAdminService.class
    │   │       │   │   GrailsCacheManager.class
    │   │       │   │   GrailsConcurrentMapCache.class
    │   │       │   │   GrailsConcurrentMapCacheManager.class
    │   │       │   │   GrailsValueWrapper.class
    │   │       │   │   SerializableByteArrayOutputStream.class
    │   │       │   │   SerializableOutputStream.class
    │   │       │   │   Timer.class
    │   │       │   │
    │   │       │   ├───compiler
    │   │       │   │       CacheTransformation.class
    │   │       │   │
    │   │       │   ├───util
    │   │       │   │       ClassUtils.class
    │   │       │   │
    │   │       │   └───web
    │   │       │       │   AlreadyGzippedException.class
    │   │       │       │   ContentCacheParameters.class
    │   │       │       │   GenericResponseWrapper$1.class
    │   │       │       │   GenericResponseWrapper.class
    │   │       │       │   Header$Type.class
    │   │       │       │   Header.class
    │   │       │       │   HttpDateFormatter.class
    │   │       │       │   PageInfo.class
    │   │       │       │   ProxyAwareMixedGrailsControllerHelper.class
    │   │       │       │   SerializableCookie.class
    │   │       │       │
    │   │       │       └───filter
    │   │       │           │   AbstractFilter.class
    │   │       │           │   CacheExpressionRootObject.class
    │   │       │           │   CacheOperationContext.class
    │   │       │           │   DefaultWebKeyGenerator.class
    │   │       │           │   ExpressionEvaluator.class
    │   │       │           │   FilterServletOutputStream.class
    │   │       │           │   LazyParamAwareEvaluationContext.class
    │   │       │           │   NoOpFilter.class
    │   │       │           │   PageFragmentCachingFilter$1.class
    │   │       │           │   PageFragmentCachingFilter$2.class
    │   │       │           │   PageFragmentCachingFilter$CacheStatus.class
    │   │       │           │   PageFragmentCachingFilter.class
    │   │       │           │   WebKeyGenerator.class
    │   │       │           │
    │   │       │           └───simple
    │   │       │                   MemoryBlockingCache.class
    │   │       │                   MemoryCacheConfiguration.class
    │   │       │                   MemoryPageFragmentCachingFilter.class
    │   │       │
    │   │       ├───databasemigration
    │   │       │   │   ChangelogXml2Groovy$_appendAttrs_closure1.class
    │   │       │   │   ChangelogXml2Groovy$_appendWithIndent_closure2.class
    │   │       │   │   ChangelogXml2Groovy.class
    │   │       │   │   DbdocController$_closure1.class
    │   │       │   │   DbdocController.class
    │   │       │   │   DslBuilder$1.class
    │   │       │   │   DslBuilder$_expandExpressions_closure1.class
    │   │       │   │   DslBuilder$_extractZipFile_closure3.class
    │   │       │   │   DslBuilder$_handleIncludedChangeLog_closure7.class
    │   │       │   │   DslBuilder$_processIncludeAll_closure2.class
    │   │       │   │   DslBuilder$_processProperty_closure5.class
    │   │       │   │   DslBuilder$_processRollback_closure4.class
    │   │       │   │   DslBuilder$_setPropertiesFromAttributes_closure6.class
    │   │       │   │   DslBuilder.class
    │   │       │   │   GormDatabase.class
    │   │       │   │   GormDatabaseSnapshotGenerator$_createIdentifierGenerator_closure4.class
    │   │       │   │   GormDatabaseSnapshotGenerator$_createSnapshot_closure1.class
    │   │       │   │   GormDatabaseSnapshotGenerator$_createSnapshot_closure2.class
    │   │       │   │   GormDatabaseSnapshotGenerator$_isIdentityColumn_closure3.class
    │   │       │   │   GormDatabaseSnapshotGenerator.class
    │   │       │   │   GormDatabaseTypeConverter.class
    │   │       │   │   GrailsChange$1.class
    │   │       │   │   GrailsChange.class
    │   │       │   │   GrailsChangeLogParser$_setChangelogProperties_closure1.class
    │   │       │   │   GrailsChangeLogParser.class
    │   │       │   │   GrailsClassLoaderResourceAccessor.class
    │   │       │   │   GrailsDiffStatusListener.class
    │   │       │   │   GrailsPrecondition$1.class
    │   │       │   │   GrailsPrecondition.class
    │   │       │   │   GroovyAwareStringChangeLogSerializer.class
    │   │       │   │   Log4jLogger.class
    │   │       │   │   MigrationRunner$_autoRun_closure1.class
    │   │       │   │   MigrationRunner.class
    │   │       │   │   MigrationUtils$_getDatabase_closure1.class
    │   │       │   │   MigrationUtils.class
    │   │       │   │   mysqlAwareCreateTableGenerator.class
    │   │       │   │   ScriptUtils$_appendToChangelog_closure2.class
    │   │       │   │   ScriptUtils$_appendToChangelog_closure2_closure3.class
    │   │       │   │   ScriptUtils$_appendToChangelog_closure2_closure4.class
    │   │       │   │   ScriptUtils$_executeAndWrite_closure1.class
    │   │       │   │   ScriptUtils.class
    │   │       │   │
    │   │       │   └───dbdoc
    │   │       │           AuthorListWriter.class
    │   │       │           AuthorWriter.class
    │   │       │           ChangeLogListWriter.class
    │   │       │           ChangeLogWriter.class
    │   │       │           ColumnWriter.class
    │   │       │           htmlListWriter.class
    │   │       │           HTMLWriter.class
    │   │       │           MemoryDocVisitor.class
    │   │       │           PendingChangesWriter.class
    │   │       │           PendingSQLWriter.class
    │   │       │           RecentChangesWriter.class
    │   │       │           TableListWriter.class
    │   │       │           TableWriter$_writeCustomHTML_closure1.class
    │   │       │           TableWriter.class
    │   │       │
    │   │       └───webxml
    │   │               FilterManager.class
    │   │
    │   └───org
    │       ├───codehaus
    │       │   └───groovy
    │       │       └───grails
    │       │           └───plugins
    │       │               └───jquery
    │       │                       JQueryConfig$_init_closure1.class
    │       │                       JQueryConfig$_init_closure2.class
    │       │                       JQueryConfig.class
    │       │                       JQueryProvider$_doRemoteFunction_closure1.class
    │       │                       JQueryProvider$_doRemoteFunction_closure2.class
    │       │                       JQueryProvider$_doRemoteFunction_closure3.class
    │       │                       JQueryProvider$_doRemoteFunction_closure4.class
    │       │                       JQueryProvider.class
    │       │
    │       └───grails
    │           └───plugin
    │               ├───resource
    │               │   │   AggregatedResourceMeta$_buildAggregateResource_closure3.class
    │               │   │   AggregatedResourceMeta$_buildAggregateResource_closure3_closure4.class
    │               │   │   AggregatedResourceMeta$_containsResource_closure1.class
    │               │   │   AggregatedResourceMeta$_isDirty_closure2.class
    │               │   │   AggregatedResourceMeta.class
    │               │   │   CSSBundleResourceMeta.class
    │               │   │   CSSLinkProcessor$_process_closure1.class
    │               │   │   CSSLinkProcessor.class
    │               │   │   DevModeSanityFilter.class
    │               │   │   javascriptBundleResourceMeta.class
    │               │   │   ProcessingFilter.class
    │               │   │   ResourceMeta$_reset_closure1.class
    │               │   │   ResourceMeta.class
    │               │   │   ResourceModule$_closure1.class
    │               │   │   ResourceModule$_getRequiredDispositions_closure3.class
    │               │   │   ResourceModule$_newResourceFromArgs_closure2.class
    │               │   │   ResourceModule.class
    │               │   │   ResourceProcessor$_afterPropertiesSet_closure5.class
    │               │   │   ResourceProcessor$_afterPropertiesSet_closure6.class
    │               │   │   ResourceProcessor$_canProcessLegacyResource_closure7.class
    │               │   │   ResourceProcessor$_canProcessLegacyResource_closure8.class
    │               │   │   ResourceProcessor$_defineModuleFromBuilder_closure16.class
    │               │   │   ResourceProcessor$_dumpResources_closure21.class
    │               │   │   ResourceProcessor$_dumpResources_closure21_closure35.class
    │               │   │   ResourceProcessor$_dumpResources_closure21_closure36.class
    │               │   │   ResourceProcessor$_dumpResources_closure22.class
    │               │   │   ResourceProcessor$_dumpStats_closure20.class
    │               │   │   ResourceProcessor$_dumpStats_closure20_closure34.class
    │               │   │   ResourceProcessor$_findSyntheticResourceById_closure9.class
    │               │   │   ResourceProcessor$_getConfigParamOrDefault_closure23.class
    │               │   │   ResourceProcessor$_getResourceMetaForURI_closure10.class
    │               │   │   ResourceProcessor$_getResourceMetaForURI_closure10_closure27.class
    │               │   │   ResourceProcessor$_getServletContext_closure24.class
    │               │   │   ResourceProcessor$_loadModules_closure17.class
    │               │   │   ResourceProcessor$_loadModules_closure18.class
    │               │   │   ResourceProcessor$_loadModules_closure18_closure30.class
    │               │   │   ResourceProcessor$_loadModules_closure18_closure31.class
    │               │   │   ResourceProcessor$_loadModules_closure18_closure31_closure32.class
    │               │   │   ResourceProcessor$_loadModules_closure18_closure31_closure33.class
    │               │   │   ResourceProcessor$_loadModules_closure19.class
    │               │   │   ResourceProcessor$_makeFileSystemPathFromURI_closure11.class
    │               │   │   ResourceProcessor$_prepareResourceBatch_closure13.class
    │               │   │   ResourceProcessor$_prepareResourceBatch_closure14.class
    │               │   │   ResourceProcessor$_prepareResourceBatch_closure14_closure28.class
    │               │   │   ResourceProcessor$_prepareResourceBatch_closure14_closure29.class
    │               │   │   ResourceProcessor$_prepareResourceBatch_closure15.class
    │               │   │   ResourceProcessor$_prepareSingleDeclaredResource_closure12.class
    │               │   │   ResourceProcessor$_updateDependencyOrder_closure1.class
    │               │   │   ResourceProcessor$_updateDependencyOrder_closure2.class
    │               │   │   ResourceProcessor$_updateDependencyOrder_closure3.class
    │               │   │   ResourceProcessor$_updateDependencyOrder_closure3_closure25.class
    │               │   │   ResourceProcessor$_updateDependencyOrder_closure4.class
    │               │   │   ResourceProcessor$_updateDependencyOrder_closure4_closure26.class
    │               │   │   ResourceProcessor.class
    │               │   │   ResourceProcessorBatch.class
    │               │   │   ResourceTagLib$_closure1.class
    │               │   │   ResourceTagLib$_closure10.class
    │               │   │   ResourceTagLib$_closure10_closure17.class
    │               │   │   ResourceTagLib$_closure1_closure15.class
    │               │   │   ResourceTagLib$_closure2.class
    │               │   │   ResourceTagLib$_closure3.class
    │               │   │   ResourceTagLib$_closure4.class
    │               │   │   ResourceTagLib$_closure5.class
    │               │   │   ResourceTagLib$_closure5_closure16.class
    │               │   │   ResourceTagLib$_closure6.class
    │               │   │   ResourceTagLib$_closure7.class
    │               │   │   ResourceTagLib$_closure8.class
    │               │   │   ResourceTagLib$_closure9.class
    │               │   │   ResourceTagLib$_resolveResourceAndURI_closure12.class
    │               │   │   ResourceTagLib$_writeAttrs_closure11.class
    │               │   │   ResourceTagLib$__clinit__closure13.class
    │               │   │   ResourceTagLib$__clinit__closure14.class
    │               │   │   ResourceTagLib.class
    │               │   │   URLUtils.class
    │               │   │
    │               │   ├───mapper
    │               │   │       MapperPhase.class
    │               │   │       ResourceMapper$_closure1.class
    │               │   │       ResourceMapper$_getDefaultExcludes_closure8.class
    │               │   │       ResourceMapper$_getDefaultIncludes_closure9.class
    │               │   │       ResourceMapper$_getExcludes_closure10.class
    │               │   │       ResourceMapper$_getExcludingPattern_closure2.class
    │               │   │       ResourceMapper$_getIncludes_closure11.class
    │               │   │       ResourceMapper$_getIncludingPattern_closure3.class
    │               │   │       ResourceMapper$_getName_closure7.class
    │               │   │       ResourceMapper$_getOperation_closure5.class
    │               │   │       ResourceMapper$_getPhase_closure4.class
    │               │   │       ResourceMapper$_getPriority_closure6.class
    │               │   │       ResourceMapper.class
    │               │   │       ResourceMappersFactory$_createResourceMappers_closure1.class
    │               │   │       ResourceMappersFactory$_createResourceMappers_closure2.class
    │               │   │       ResourceMappersFactory$_createResourceMappers_closure2_closure7.class
    │               │   │       ResourceMappersFactory$_createResourceMappers_closure3.class
    │               │   │       ResourceMappersFactory$_createResourceMappers_closure4.class
    │               │   │       ResourceMappersFactory$_createResourceMappers_closure5.class
    │               │   │       ResourceMappersFactory$_createResourceMappers_closure6.class
    │               │   │       ResourceMappersFactory.class
    │               │   │
    │               │   ├───module
    │               │   │       ModuleBuilder.class
    │               │   │       ModuleDeclarationsFactory$_getModuleDeclarations_closure1.class
    │               │   │       ModuleDeclarationsFactory$_getModuleDeclarations_closure2.class
    │               │   │       ModuleDeclarationsFactory$_getModuleDeclarations_closure3.class
    │               │   │       ModuleDeclarationsFactory.class
    │               │   │       ModulesBuilder$_invokeMethod_closure1.class
    │               │   │       ModulesBuilder.class
    │               │   │
    │               │   └───util
    │               │           HalfBakedLegacyLinkGenerator.class
    │               │           ResourceMetaStore$_addResource_closure1.class
    │               │           ResourceMetaStore.class
    │               │
    │               └───resources
    │                   └───artefacts
    │                           AbstractResourcesArtefactHandler.class
    │                           DefaultResourceMapperClass.class
    │                           DefaultResourcesClass.class
    │                           ResourceMapperArtefactHandler.class
    │                           ResourceMapperClass.class
    │                           ResourcesArtefactHandler.class
    │                           ResourcesClass.class
    │
    ├───lib
    │       ant-1.8.2.jar
    │       ant-junit-1.8.2.jar
    │       ant-launcher-1.8.2.jar
    │       ant-trax-1.7.1.jar
    │       antlr-2.7.7.jar
    │       aopalliance-1.0.jar
    │       asm-3.1.jar
    │       aspectjrt-1.6.10.jar
    │       aspectjweaver-1.6.10.jar
    │       bcmail-jdk14-138.jar
    │       bcpg-jdk15-1.45.jar
    │       bcprov-jdk15-1.45.jar
    │       cglib-2.2.jar
    │       commons-beanutils-1.8.3.jar
    │       commons-cli-1.2.jar
    │       commons-codec-1.5.jar
    │       commons-collections-3.2.1.jar
    │       commons-dbcp-1.4.jar
    │       commons-el-1.0.jar
    │       commons-fileupload-1.2.2.jar
    │       commons-io-2.1.jar
    │       commons-lang-2.6.jar
    │       commons-pool-1.5.6.jar
    │       commons-validator-1.3.1.jar
    │       concurrentlinkedhashmap-lru-1.2_jdk5.jar
    │       core-renderer-R8.jar
    │       dom4j-1.6.1.jar
    │       ecj-3.7.2.jar
    │       ehcache-core-2.4.6.jar
    │       gant_groovy1.8-1.9.6.jar
    │       grails-2.1.1.jar
    │       grails-bootstrap-2.1.1.jar
    │       grails-core-2.1.1.jar
    │       grails-crud-2.1.1.jar
    │       grails-datastore-core-1.1.0.RELEASE.jar
    │       grails-datastore-gorm-1.1.0.RELEASE.jar
    │       grails-datastore-simple-1.1.0.RELEASE.jar
    │       grails-docs-2.1.1.jar
    │       grails-gdoc-engine-1.0.1.jar
    │       grails-hibernate-2.1.1.jar
    │       grails-logging-2.1.1.jar
    │       grails-plugin-async-2.1.1.jar
    │       grails-plugin-codecs-2.1.1.jar
    │       grails-plugin-controllers-2.1.1.jar
    │       grails-plugin-converters-2.1.1.jar
    │       grails-plugin-datasource-2.1.1.jar
    │       grails-plugin-domain-class-2.1.1.jar
    │       grails-plugin-filters-2.1.1.jar
    │       grails-plugin-gsp-2.1.1.jar
    │       grails-plugin-i18n-2.1.1.jar
    │       grails-plugin-log4j-2.1.1.jar
    │       grails-plugin-mimetypes-2.1.1.jar
    │       grails-plugin-scaffolding-2.1.1.jar
    │       grails-plugin-services-2.1.1.jar
    │       grails-plugin-servlets-2.1.1.jar
    │       grails-plugin-testing-2.1.1.jar
    │       grails-plugin-tomcat-2.1.1.jar
    │       grails-plugin-url-mappings-2.1.1.jar
    │       grails-plugin-validation-2.1.1.jar
    │       grails-resources-2.1.1.jar
    │       grails-scripts-2.1.1.jar
    │       grails-spring-2.1.1.jar
    │       grails-test-2.1.1.jar
    │       grails-test-suite-base-2.1.1.jar
    │       grails-web-2.1.1.jar
    │       grails-webflow-2.1.1.jar
    │       grails-wrapper-support-2.1.1.jar
    │       groovy-all-1.8.8.jar
    │       h2-1.3.164.jar
    │       hamcrest-core-1.1.jar
    │       hibernate-commons-annotations-3.2.0.Final.jar
    │       hibernate-core-3.6.10.Final.jar
    │       hibernate-ehcache-3.6.10.Final.jar
    │       hibernate-jpa-2.0-api-1.0.1.Final.jar
    │       hibernate-validator-4.1.0.Final.jar
    │       hsqldb-1.8.0.10.jar
    │       itext-2.0.8.jar
    │       ivy-2.2.0.jar
    │       jansi-1.2.1.jar
    │       javassist-3.16.1-GA.jar
    │       javax.servlet-api-3.0.1.jar
    │       jcl-over-slf4j-1.6.2.jar
    │       jline-1.0.jar
    │       jna-3.2.3.jar
    │       json-simple-1.1.jar
    │       jsp-api-2.0.jar
    │       jsp-api-2.1.jar
    │       jstl-1.1.2.jar
    │       jta-1.1.jar
    │       jul-to-slf4j-1.6.2.jar
    │       junit-4.10.jar
    │       liquibase-core-2.0.5.jar
    │       log4j-1.2.16.jar
    │       ognl-2.7.3.jar
    │       org.springframework.uaa.client-1.0.1.RELEASE.jar
    │       oro-2.0.8.jar
    │       persistence-api-1.0.jar
    │       protobuf-java-2.4.1.jar
    │       serializer-2.7.1.jar
    │       servlet-api-2.4.jar
    │       sitemesh-2.4.jar
    │       slf4j-api-1.6.2.jar
    │       snakeyaml-1.8.jar
    │       spring-aop-3.1.2.RELEASE.jar
    │       spring-asm-3.1.2.RELEASE.jar
    │       spring-aspects-3.1.2.RELEASE.jar
    │       spring-beans-3.1.2.RELEASE.jar
    │       spring-binding-2.0.8.RELEASE.jar
    │       spring-context-3.1.2.RELEASE.jar
    │       spring-context-support-3.1.2.RELEASE.jar
    │       spring-core-3.1.2.RELEASE.jar
    │       spring-expression-3.1.2.RELEASE.jar
    │       spring-jdbc-3.1.2.RELEASE.jar
    │       spring-jms-3.1.2.RELEASE.jar
    │       spring-js-2.0.8.RELEASE.jar
    │       spring-orm-3.1.2.RELEASE.jar
    │       spring-test-3.1.2.RELEASE.jar
    │       spring-tx-3.1.2.RELEASE.jar
    │       spring-web-3.1.2.RELEASE.jar
    │       spring-webflow-2.0.8.RELEASE.jar
    │       spring-webmvc-3.1.2.RELEASE.jar
    │       springloaded-core-1.0.6.jar
    │       standard-1.1.2.jar
    │       tomcat-annotations-api-7.0.30.jar
    │       tomcat-api-7.0.30.jar
    │       tomcat-catalina-7.0.30.jar
    │       tomcat-catalina-ant-7.0.30.jar
    │       tomcat-coyote-7.0.30.jar
    │       tomcat-embed-core-7.0.30.jar
    │       tomcat-embed-jasper-7.0.30.jar
    │       tomcat-embed-logging-juli-7.0.30.jar
    │       tomcat-embed-logging-log4j-7.0.30.jar
    │       tomcat-juli-7.0.30.jar
    │       tomcat-servlet-api-7.0.30.jar
    │       tomcat-util-7.0.30.jar
    │       validation-api-1.0.0.GA.jar
    │       xpp3_min-1.1.4c.jar
    │
    └───tld
            c.tld
            fmt.tld
            grails.tld
            spring.tld

【问题讨论】:

几个问题: 1. 您在访问 URL 时是否使用了正确的上下文? 2. 如果您进行“圣杯战争”并将其部署到 IntelliJ 之外的 Tomcat 会发生什么? 谢谢格雷格。 1. 是的。单击管理器应用程序中的链接时也会发生这种情况。我什至可以下载属于我的应用程序的 Javascript 文件。 2.它的工作。 Facets 只是告诉 IntelliJ 关于您的项目的信息,工件配置是什么? (Artifacts 就在侧边栏中的 Facets 下方) 添加了工件配置和目录结构。 【参考方案1】:

这实际上是一个已知问题:

IDEA-72093 允许部署由“grails war”创建的运行配置战争

您应该使用第一条评论中的解决方法:

运行服务器时,需要做两件事:运行Build | Make Grails Web Archive,然后运行服务器的运行配置 创建的战争添加为外部来源

如果您不知道外部来源选项,check this screenshot。

【讨论】:

谢谢 - 但这听起来很麻烦,而且我不能进行热插拔。有没有机会在 IntelliJ IDEA 中实现? 有没有其他方法可以使用本地或外部 Tomcat 配置进行热插拔? @HAL9000 不,对于开发和热插拔,您应该在 IDEA 中使用标准的 grails run-app 运行/调试配置。导出 grails 战争功能是为生产部署而设计的,而不是为开发而设计的。目前没有办法在 Tomcat 服务器上快速测试和热插拔 Grails 应用程序。 是的,你是对的。但 IntelliJ 似乎有能力发动一场圣杯战争。也许它不应该允许使用“GrailsWeb”资源创建战争工件,或者至少它应该说它不起作用。我仍然会尝试优化您的解决方法,以实现爆炸性战争生成并启用 GSP 编辑...

以上是关于IntelliJ IDEA 构建不完整的 Grails 战争的主要内容,如果未能解决你的问题,请参考以下文章

intellij idea 2017 gradle构建spring-boot web项目

新版本IntelliJ IDEA 构建maven,并用Maven创建一个web项目

Intellij idea Maven-generate完整教程

text IntelliJ IDEA社区版构建WAR

intellij idea 14单独编译class

IntelliJ IDEA——利用maven插件构建web工程