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项目