利用 Intellij IDEA 10 开发多工程Grails应用的关键步骤及注意事项(随笔)

       Intellij IDEA 在目前来说应该是开发Groovy/Grails应用效率最高的一个IDE,虽然也有些很讨厌的小BUG,但比起目前的 Eclipse ,确切的说是Springsource Tool Suite 2.5.1(STS) 来说,IDEA 在代码智能提示和对Grails的支持深度上高出很多.也不知道这个SpringSource是怎么搞的,自家的东西(Grails所在的G2One被SpringSource收购,后者又被VMWare收购),做出来还不及一个捷克的IDE产品,STS在Groovy/Grails的集成开发上还有很远的路要走啊,虽然比起前些年的有很大进步。

 

      不过,要说的是,虽然 IDEA 目前在Groovy/Grails 的开发环境要好,在一般的 Grails 开发是可能没什么,但在比较大的应用,特别是多工程的开发中存在问题,或者说是我的无知导致的问题。下面一一记录,帮助我也帮助跟我一样,想用Grails做点东西同行了,希望能看到 Grails 在国内有一个更好的社区环境,两年前有过关注,两年过去了,现在的Grails比起以前来,有了很大的进步,同时在基于开发的效率来说,Grails是当仁不让的 Java版 的ROR,这是我再次考虑用它的两个主因。

 

    题外话说完了,下面进入正题,下面是我目前用 Intellij IDEA 在开发 Grails 的多工程时,遇到一个问题记录及解决方法,这里说的多工程是指比如 一个 Domain 的Grails 插件项目,一个Services 的 Grails 插件项目,一个 TagLib 的 Grails 插件项目,最后由一个 Grails 主项目引用前三者,同时,Services 项目也引用了 Domain项目:

 

1.在控制台输入: grails create-app mainApp

 

2.cd mainApp

 

3.创建子目录 plugins 。不过,也可以在mainApp的同级目录下创建子插件项目

 

4.用同样的命令“ grails create-app xx ”在 plugins 目录下创建三个子插件项目 Domain、Services、TagLib

 

5.编辑 mainApp/application.properties,加入项目要用的其他第三方插件

 

6.编辑 mainApp/grails-app/conf/BuildConfig.groovy,添加如下内容:

grails.plugin.location.'domain' =  'plugins/domain'
grails.plugin.location.'services' =  'plugins/services'
grails.plugin.location.'tagib' =  'plugins/taglib'

  如果子插件项目与mainApp项目在同级目录,请将 ‘plugins/domain’ 替换为 '../domain'

 

7.编辑 services/grails-app/conf/BuildConfig.groovy , 添加它引用的domain插件位置

grails.plugin.location.'domain' =  '../domain'

 

8.在各项目中的 xx//application.properties 的文件中加入要依赖的第三方插件

 

9.进入到mainApp项目的主目录,在控制台输入: grails run-app 启动一下该主项目,如果上面的操作正确,应该可以在 http://localhost:8080/mainApp 下看到可爱的Grails应用的初始页面。不做这一步的关键是,在后面的Intellij项目的Project Settings -> mainApp-grailsPlugins -> Modules -> Sources 中不会自动加载那些被引用的第三方插件项目,及domain,services,taglib项目,而第三方项目的源码必须在 run-app 后,才会在系统的 .grails/1.3.6/projects

/icescrum/plugins 目录中生成,并被后面生成的 Intellij 项目自动在 mainApp-grailsPlugins -> Modules ->Sources 中自动被引用。

 

10.依旧用控制台在mainApp的主目录下输入:grails integrate-with --intellij ,让 grails 为 mainApp项目 自动生成

     Intellij IDEA 项目。

 

11.启动 Intellij IDEA 程序,在 File > Open Project 中定位到 mainApp 目录,如果用的是Intellij 10的话,会提示是否要转换旧项目,点击是后它将自动构建该项目,并自动生成各子插件的子项目,该过程将持续一会后自动完成,点Grails View 视图即可看到各项目的情况。

 

12.最好在生成后关闭一下项目再打开。

 

13.如果在项目中依然发现有比如 services 插件项目无法找到 domain 插件项目的类的情况,对于此类情况,通常需要在

File > Project Settings -> Modules 找到 servieces 项目,将 Dependcies 列表框中的 domain项用右侧的 Move UP  移到前面,同时删除 Modules 中的 mainApp-grailsPluings项,否则在保存时会提示“在同一项目下两个模块不能共用同一根”的提示,如果再次打开该项目时还需要每次这样做一下,这应该是目录 IDEA 10.0.1的一个Grails开发的BUG了。

 

14.点击 Intellij 的 Run > Edit Configurations > Grails 将 Before launch 面板中的 “Make” 默认的勾选设置为未选中。

 

15.如果在调试或启动过程中提示堆空间不够,请在 Run > Edit Configurations > Grails 的 “VM Parameters” 中增加 “-XX:MaxPermSize=1024m -Xmx1024M -server”

 

16.我发现 Grails 项目的 Project Settings 更改是无效的,就算你更改了它也会自动恢复的,它可能是按 Grails 项目的相关配置信息自动配置的。要更改你必须得手动更改项目的application.properties文件、BuildConfig.groovy等信息才可以。

 

     以上是我遇到的问题即解决步骤和方法。特别说明,开发环境 MacOS 10.6(JDK 6_22) + Intellij IDEA Ultimate 10.0.1  + Groovy 1.7.5 + Grails1.3.6。

 

在使用 Intellij IDEA 开发 Grails 应用中有以下几点体会:

1.从 Eclipse 转到 Intellij 上非常不适应,很多东西老是潜意识去对号。快捷键也完全不一样,不过感觉 IDEA 的快捷键更短,更易记.

2.IntelliJ 在 Grails 的开发上确实比 SpringSource 的 STS 上更胜一筹,智能程度上非常高,这也是IDEA的优势所在了。

3.Intellij 在 Grails 开发上还有 BUG,比较头疼。

 

Ubuntu 16.04部署WordPress的LAMP栈契约兼容性治理 LAMP(Linux-Apache-MySQL-PHP)是Web应用最经典的技术栈,其核心在于各组件间的隐式协作契约而非简单安装。Apache的MPM模型选择、模块加载顺序虚拟主机权限配置,直接决定WordPress固定链接、缓存和安全机制能否生效;MySQL 5.7的严格SQL模式认证插件变更,常导致老插件安装失败或连接异常;PHP 7.0在Ubuntu 16.04中的OPcache行为、mysqlnd驱动依赖及运行时权限限制,构成性能安全的关键断层。理解这些底层原理,才能在长期支持发行版上为快速迭 阅读详情

相关推荐

WordPress不是建站工具,而是可编程的数字操作系统

WordPress本质上是一个基于PHPMySQL的开源内容管理系统(CMS)内核,而非简单的网站生成器。其核心价值在于模块化架构——通过主题(Presentation)、插件(Logic)、数据库范式(Data)和钩子机制(Runtime)构成可扩展、可定制的运行时环境。这种设计赋予开发者对内容结构、渲染流程功能注入的完全控制权,也带来安全、性能维护上的系统性挑战。理解其内核原理,是实现高可用、可演进WordPress站点的技术前提;掌握MySQL优化、插件微服务治理Gutenberg区块化开发

weixin_33743703的博客 600

GrailsIDEA中的调试

GrailsIDEA中的调试   Intellij idea grails debug   使用的是grails-2.3.x之后,创建一个新的grails app。   添加Book domain对象后有自动生成了BookController和相关gsp v...

weixin_30273763的博客 294

数据库国产化探究及升级改造过程指导

当前官网最新版本为DM8,相较于目前主流产品架构:不同特性依靠不同内核去实现,DM8独特采用了双存储引擎架构,行存储引擎和列存储引擎可相互配合、协同工作。同时实现了计算层和存储层的分离,同一内核既支持共享存储式集群,也支持分布式事务集群。

企业实战系列集 ●●● https://ximenjianxue.blog.csdn.net 5234

Idea 配置Groovy环境

近期在使用Streamsets中使用到了Groovy Evaluator组件,但是sdc中调试Groovy不方便,索性就在Idea中调试,在此分享一下在Idea中如何配置Groovy环境。

菜鸟叔叔的博客 9251

秒表项目_刚刚!2021年郑州中招体育考试项目抽号结果出炉!

2021年郑州中招体育考试项目抽号结果出炉!(来源:郑州市教育局)项目分值摇号过程第一步:从“素质类一”和“素质类二”里摇号确认其中一项,最终摇中“素质类二”!第二步:从第一步确定的“素质类二”中再次摇号确定具体考试项目,最终摇中“立定跳远”!第三步:从技能类项目中摇号确定具体考试项目,最终摇中“足球运球”!最后一步:孩子自己从第一步未摇中的素质类一(1分钟跳绳和50米跑)中,选择一项作...

weixin_32443035的博客 468

IntelliJ IDEA创建Grails工程

目录 一. 本地部署Grails环境 二. 创建Grails项目 1. File->New->Project 2. 配置Gradle 3. 配置MySQL数据源 (1)编辑build.gradle (2)编辑 application.yml 4. 新建domain类 5. 创建controller和views 6. 运行 一. 本地部署Grails环境 官网下载...

闲狗的博客 5052

Java程序员使用Grails的十大优势

Web开发方面没有王者,PHP市场很大,但RoR,Python,Java,及至Asp.net都占据着一方市场.那么作为Java程序员,当你不想使用SSH做网站的时候,尝试一下Grails吧,这里是Java程序员使用Grails的十大优势 1.易于学习 这里并不是说Grails不易于PHP或者Python程序员学习,GrailsGroovy都很容易学习,也容易使用,但对于Java程序员...

再喝咖啡 254

命令行无法运行php,php文件在命令行可以顺利运行,在浏览器上无法正常运行

首先感谢抽时间阅读!我尝试通过浏览器登陆本地服务器运行我的PHP文件,无法正常运行。我安装的是Appserver安装包2.6.0版本(Appserver网站),包内包含的软件版本为:Apache 2.2.8、PHP 6.0.0-dev。为了找出错误原因,我进行了如下步骤:1、从命令行运行PHP文件,文件名为julia.php。运行成功。运行过程如下:php文件代码为:exec(" julia 12...

weixin_42327291的博客 827

cmd启动php无法用浏览器打卡,php文件在命令行可以顺利运行,在浏览器上无法正常运行...

首先感谢抽时间阅读!我尝试通过浏览器登陆本地服务器运行我的PHP文件,无法正常运行。我安装的是Appserver安装包2.6.0版本(Appserver网站),包内包含的软件版本为:Apache 2.2.8、PHP 6.0.0-dev。为了找出错误原因,我进行了如下步骤:1、从命令行运行PHP文件,文件名为julia.php。运行成功。运行过程如下:php文件代码为:exec(" julia 12...

weixin_29895109的博客 166

Ubuntu 12.04 部署 WordPress 4.9.x 兼容实践指南

WordPress 是基于 PHP 的主流开源内容管理系统,其运行依赖于特定版本的 PHP、MySQL 和 Web 服务器环境。理解 WordPress 版本 PHP 兼容性原理,是保障老旧系统稳定运行的关键技术基础;PHP 5.3 作为承上启下的经典版本,虽已停止维护,但在嵌入式、工控、教育等边缘场景中仍具工程价值。本文聚焦 LAMP 栈底层兼容逻辑,解析 Apache 2.2 + mod_php + MySQL 5.5 组合如何支撑 WordPress 4.9.x 在 Ubuntu 12.04 上实现

weixin_30613433的博客 397

WordPress Docker Compose 部署实战:从零搭建到生产就绪

WordPress 是最流行的开源建站系统,而 Docker Compose 已成为其本地开发轻量部署的事实标准。它通过声明式 YAML 文件解耦应用、数据库 Web 服务,实现环境一致性、快速复位和多版本并行。相比传统 LAMP 手动配置易出错、难复现的痛点,Docker 方案以容器化封装 PHP 运行时、MariaDB 数据库及 Nginx/Apache 服务,显著提升交付确定性。本文聚焦可落地的工程实践,涵盖最小可行 docker-compose.yml 编写、固定链接文件上传等高频问题修复、W

技术百科 483

Web渗透测试实战:从信息搜集到权限获取的50个核心技巧

Web渗透测试是网络安全领域的关键实践,其核心在于系统性地识别和利用应用层漏洞。其基本原理是通过模拟攻击者行为,对Web应用进行授权安全评估,以发现潜在风险。这项技术的核心价值在于帮助企业主动发现并修复安全缺陷,提升整体防御能力,广泛应用于金融、电商、政务等各类在线业务系统的安全测试中。在实战中,高效的信息搜集精准的漏洞探测是成功的关键。例如,通过子域名挖掘和端口扫描等被动主动结合的技术,可以全面绘制目标资产地图;而针对SQL注入、文件上传等常见漏洞,采用绕过WAF和定制化字典等策略,能显著提升测试效率

weixin_33694620的博客 338

利用DockerNextcloud将旧电脑改造为私有云网盘

文件服务器是网络存储的核心概念,它允许在局域网或互联网上集中管理和访问文件。其原理是通过特定的服务器软件将一台计算机转变为数据存储共享中心。这项技术的核心价值在于实现数据自主权,避免依赖第三方云服务,从而保障隐私安全并节省长期订阅成本。在应用场景上,它非常适合用于家庭媒体中心、个人文档同步或小型团队协作。Docker容器化技术通过封装应用及其依赖,极大地简化了部署流程,而Nextcloud作为开源的自托管云平台,提供了媲美主流网盘的丰富功能。本教程正是基于Docker和Nextcloud这两个关键技术,指

weixin_33946605的博客 444

渗透测试 ( 3 ) --- Metasploit Framework (MSF)

Metasploit专业版和精简版的主要差别在于专业版上面集成了全自动攻击模块,通过远程API集成网络分割测试模块、标准基线审计向导模块、闭环漏洞验证优先处理功能、动态载荷规避防病毒解决方案、钓鱼意识管理和鱼叉式网络钓鱼模块、对OWASP Top 10漏洞的Web应用程序测试模块、高级命令行和Web界面的选择模块。但是,专业版是必须要付费的,所以除非用到非个人的功能,否则没有必要去使用专业版,而且,专业版和精简版的渗透攻击模块是一样的。.........

freeking101的博客 1万+

Mythos:首个可规模化漏洞挖掘的AI安全协处理器

漏洞挖掘是网络安全的核心能力,其本质是结合程序分析、系统建模攻击路径推理的复杂工程。传统方法高度依赖专家经验,难以复现规模化。随着大模型在代码理解、多步推理和沙箱验证上的突破,具备任务感知路由、漏洞利用成功率预测多阶段攻防博弈能力的AI模型,正将‘发现可利用漏洞’从艺术转化为可集成、可调度、可版本化的工程能力。Claude Mythos作为该范式的首个工业级实现,标志着AI不再仅辅助安全分析,而是成为CI/CD中实时守门、遗留系统考古加固、红蓝对抗预判响应的关键协处理器。

weixin_33736649的博客 401

基于IDEA13+Grails+Groovy+Extjs4.2实现企业级信息系统快速开发的解决方案总结

项目进行中,后续时间宽松后,对该项目做个深度总结......

SeaSonS 1414

idea16+grails+mysql

1. 序这几天看了ROR(Ruby on Rails),然后了解了下GrailsGroovy on Rails),发现Grails真是个神奇的东西,groovy的语法也很简洁,现在来讲讲用idea16创建一个grails应用,并连接mysql数据库2. 项目搭建1. 下载grails http://www.grails.org/download.html2. idea新建project,选择Gr

lxfHaHaHa的博客 1001

IntelliJ IDEA 工具grails框架打war包

Tool-->Grail-->RunTarget 弹出窗口, 输入 :prod war  War包位置: 工程下target文件中

yushi6310的博客 1786
上一篇: Adobe Reader 浏览器插件的工具栏让我啼笑皆非
下一篇: Zen Coding – CSS/HTML的编码神器(转)
iteye_17942
博客等级 码龄8年 4粉丝 32原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值