1

我有一个项目,其中包含一个 Groovy 通用代码模块和一个单独的 Grails web-app 模块。我从 Eclipse 更改为 IntelliJ 12.1.2,这是一个巨大的改进。一切似乎都运行得更好——例如,当我向 Groovy 项目中的类添加字段时,我立即在 Grails 项目的 IntelliSense 中看到它们可用。此外,另一个很大的好处是,我终于能够在 IDE 中调试 Grails 应用程序(万岁,因为不必到处乱扔打印语句的代码!)。

但是,我遇到的问题是,当我执行 Run->Run 'Grails:FooProj' 或 Run->Debug 'Grails:FooProj' 时运行的代码似乎与保存的不同步代码。例如,我可以在代码中添加一条日志语句,然后尝试运行它,但它没有显示出来。就像它使用 jar/wars 的缓存版本一样。

需要注意的一点是,对于我的运行/调试配置,我必须检查 Maven 设置的“脱机工作”框,这样它就不会进入连接下拉罐子。我希望它使用我对代码所做的本地更改,而不是发布的内容。

如何让 IntelliJ 使用我在调试 Web 应用程序时所做的本地代码更改?我可以去控制台并mvn clean install在公共代码项目上做一个,之后它在 IntelliJ 中工作正常,但我不想每次我想调试我的应用程序时都掉到控制台。

4

2 回答 2

1

更新

一种替代方法可能是:

  • 删除 Grails pom.xml 中的 Maven 依赖项
  • 确保公共项目的 jar 最终位于 grails-project-dir/lib
  • 在 project-dir/lib/common.jar 文件上添加 IDE 类路径依赖项

公共代码是一个 Maven 依赖项,它是从本地 Maven 缓存中获取的。您也可以从 IDE 运行 maven clean install ...

如果您不希望创建一个简单的非 Maven 项目并将公共项目添加为依赖项,那么您的更改将被即时获取。

希望足够清楚

于 2013-05-02T11:17:05.657 回答
1

我有一个问题和出路给你。

问题:-

BuildConfig如果您使用 Grails 版本 > 2.x,您是否有以下设置?如果没有,您可以尝试添加它,然后运行您的应用程序。

grails.project.dependency.resolution = {
    pom true
}

出路:-

在 InteliJ 中,如果您每次运行应用程序时都去Run/Debug Configuration -> Maven Settings -> Before Launch(in bottom) 设置一个then 的Before Launch配置,它会隐式地为您执行一个操作,而不是您在命令提示符下执行它。Run Maven Goalmvn install

于 2013-05-01T18:44:30.723 回答