我正在做参考指南教程。在 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 的情况下使用这么旧的版本是否有意义。