Bei großen Wicket-Projekten kann das hotdeployment des maven jetty plugins schonmal dazu führen, dass aus dem Vorteil ein Nachteil wird. Dabei ist das Ziel recht einfach: Nur die Html-Templates für die Wicket-Komponenten sollen neu geladen werden, wenn sich da was verändert hat. Alle Vorschläge aus den Foren sind mir zu aufwendig Außerdem mag ich die Html-Dateien nicht in das selbe Verzeichnis wie die Quelltexte legen. Ich habe mir daher einen für das Problem angepassten ResourceStreamLocator geschrieben:
public class MavenDevResourceStreamLocator extends ResourceStreamLocator
{
String _prefix="src/main/resources/";
public IResourceStream locate(final Class clazz, final String path)
{
IResourceStream located=getFileSysResourceStream(path);
if (located != null)
{
// alles ok
return located;
}
// fallback
located=super.locate(clazz, path);
return located;
}
private IResourceStream getFileSysResourceStream(String path)
{
File f=new File(_prefix+path);
if ((f.exists()) && (f.isFile()))
{
return new FileResourceStream(f);
}
return null;
}
}
Eingebaut wird das dann in die init-Methode der Application-Klasse wie folgt:
if (DEVELOPMENT.equalsIgnoreCase(configurationType))
{
getResourceSettings().setResourceStreamLocator(new MavenDevResourceStreamLocator());
}
Und schon werden alle Änderungen an den Html-Dateien sichtbar.