0

我正在做参考指南教程。在 view.groovy 中保存更改时,我可以看到 eclipse 的构建工作区消息,但这些更改不会显示在 ViewTester 中,直到我在核心目录中执行 mvn 编译。

这是正确的行为吗?是否可以在核心目录中没有显式 mvn compile 的情况下查看 ViewTester 中的更改?

我的设置:Win7、jdk1.7.0_55、Eclipse Luna Service Release 2 (4.4.2)、来自 www.jspresso.org/external/updates/e44/ 的 Jspresso Developer Studio

更新:当使用refId id:'contact'而不是reference 'contact', ref:'ContactInfo'mvn compile 显示以下错误:

[INFO] Scanning for changes : C:\jspdev\wstutorial\quickhr\core\src\main\dsl
[INFO] Detected a change on source C:\jspdev\wstutorial\quickhr\core\src\main\dsl\view.groovy. Sun May 31 17:59:40 CEST 2015 > Sun May 31 17:57:14 CEST 2015
NBR ERROR : 1
UR-Unresolved reference        : "Company.pane" ask for <Company.contact.address> of type field

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.038s
[INFO] Finished at: Sun May 31 17:59:51 CEST 2015
[INFO] Final Memory: 15M/37M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.jspresso.maven:sjs-maven-plugin:4.1-SNAPSHOT:compile-sjs (generate-dsl-application) on project quickhr-core: SJS defined frontend / views is invalid.
[ERROR] NBR ERROR : 1
[ERROR] UR-Unresolved reference        : "Company.pane" ask for <Company.contact.address> of type field
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

UPDATE2:正如文森特所说,refId 'contact', id:'contact'修复了使用 refid 时的编译错误。清理项目工作区对 ViewTester 问题没有帮助。我发现C:\jspdev\wstutorial\quickhr\core\target\generated-resources\dsl\de\aboware\quickhr\view当 view.groovy 被保存但不在目录中时,dsl-view.xml 在目录中更新,C:\jspdev\wstutorial\quickhr\core\target\classes\de\aboware\quickhr\view似乎 ViewTester 正在从那里读取它。运行 mvn compile 会更新此目录中的文件(或手动复制),然后 ViewTester 会找到更改。知道为什么这不会自动发生吗?

UPDATE3:也许这是一个 eclipse/maven 来源的问题。当我在 view.groovy 中保存更改(启用自动构建)后进行构建清理时,ViewTester 无需在控制台上显式 mvn compile 即可获得更改。在将更改保存到 view.groovy 后,似乎并非项目的所有必需部分都会自动重新编译。对我有什么提示吗?

UPDATE4:对于 groovy 文件中的每一个更改,我都必须进行构建清理以查看 ViewTester 和 SwingStartup 中的更改。我认为这更像是我的 Eclipse 版本/设置的问题,而不是 jspresso 的问题。我绑定了一个快捷方式来构建干净的东西,这有助于处理这个问题。

更新5:我使用 Jspresso 4.2-SNAPSHOT 从头开始​​ 2 次(Kepler/Luna),并检查了资源目录是否存在 - 没有成功。保存对 groovy 文件的更改时,会触发 compile-sjs 目标,并且在 target/generated-resources/dsl 目录中更新 spring xml 文件。但是在默认输出目录 target/classes 中没有任何反应。当我手动(从 Eclipse 内部)更改生成的 spring xml 文件时,目标/类目录得到更新。我认为 eclipse 不会将 spring xml 文件的生成识别为必须由自动构建来回答的工作区更改。可能在 M2E 中使用较新的 eclipse 版本发生了一些变化。我应该用朱诺再试一次吗?但是我不知道在 Mars 已经是 RC2 的情况下使用这么旧的版本是否有意义。

4

1 回答 1

0

文档中有关于refId使用的错误。这已经被修复了。正确的说法是:

refId 'contact', id:'contact'

关于主要问题,只需在保存文件后重新启动ViewTesterview.groovy就足以反映更改。无需通过 CLI。阅读您的问题,我可以看到触发了 Eclipse 构建,因此我认为自动构建是更改出现所必需的。您能否彻底清理工作区(项目 > 清理...> 清理所有项目)并重试?有时增量构建无法正确检测到 groovy dsl 源中的更改。

更新:请确保target/generated-resources/dsl正确安装为项目中的资源目录。这应该通过 JDS 插件在 ME2 中注册构建挂钩来自动实现。

在此处输入图像描述

于 2015-06-01T07:16:26.667 回答