嗯,这是我预期的 100% 工作的解决方案。在@erik-b 和@jorn-horstmann 的回答之后,我想到了这个,并考虑了我读过的一些帖子。
所以基本上我有下一个 Ant 目标,它热部署我的 Share extensions Java 项目的内容:
<!--
Hot copy individual files into appropriate deployment folder (e.g. $TOMCAT_HOME/webapps/share)
-->
<target name="hotdeploy-tomcat-share" depends="clean, prepare, build-jar" description="Hot copy individual files into appropriate deployment folder (e.g. $TOMCAT_HOME/webapps/share)">
<echo message="Generating and deploying JAR file with custom configuration files" />
<jar destfile="${dist.dir}/${jar.name}">
<!-- Only including configuration XML files such as share-config-custom.xml -->
<fileset dir="${build.jar.dir}" includes="**/META-INF/*.xml" />
</jar>
<copy todir="${tomcat.share.deployment.path}/WEB-INF/lib">
<fileset file="${dist.dir}/${jar.name}" />
</copy>
<echo message="Hot deploying Share files" />
<copy todir="${tomcat.share.deployment.path}/WEB-INF/classes" includeEmptyDirs="false">
<fileset dir="${build.jar.dir}">
<patternset refid="hotdeploy-tomcat-patternset" />
</fileset>
</copy>
</target>
必须禁用自动重新加载模块功能,否则每次执行上述 Ant 目标时,Tomcat 都会重新加载 Share 和其他部署的 Web 应用程序。另外,我相信也可以在 $TOMCAT_HOME/shared/ 目录中进行热部署,但我还没有尝试过。
我用于开发扩展的 Java 项目是这个模型项目:http ://code.google.com/p/share-extras/wiki/SampleProject 。有完整的构建脚本以及所需的其他目标。
我也在我的 share-config-custom.xml 中使用它:
<!-- Global config section -->
<config replace="true">
<flags>
<!--
Developer debugging setting to turn on DEBUG mode for client scripts in the browser
-->
<client-debug>true</client-debug>
<!--
LOGGING can always be toggled at runtime when in DEBUG mode (Ctrl, Ctrl, Shift, Shift).
This flag automatically activates logging on page load.
-->
<client-debug-autologging>false</client-debug-autologging>
</flags>
</config>
<config evaluator="string-compare" condition="WebFramework">
<web-framework>
<!-- SpringSurf Autowire Runtime Settings -->
<!--
Developers can set mode to 'development' to disable; SpringSurf caches,
FreeMarker template caching and Rhino JavaScript compilation.
-->
<autowire>
<!-- Pick the mode: "production" or "development" -->
<mode>development</mode>
</autowire>
<!-- Allows extension modules with <auto-deploy> set to true to be automatically deployed -->
<module-deployment>
<mode>manual</mode>
<enable-auto-deploy-modules>true</enable-auto-deploy-modules>
</module-deployment>
</web-framework>
</config>
例如,最后一个 XML 片段避免在对 FTL 页面执行任何更改后刷新 Web 脚本。
我还使用 JRebel 进行了一些测试,但根据我的经验,我会说它对 Share 开发没有多大帮助。
接下来的文章中还有一些有趣的东西:
http://blogs.alfresco.com/wp/kevinr/2010/04/07/developer-tips-for-alfresco-share-33/
http://techblog.zabuchy.net/2012/debugging-javascript-in-alfresco/
希望它可以帮助别人。