我希望将静态资源保留在类树之外,但是将它们保存在src/main/resources
树中。虽然它们应该使用与java类相同的路径,例如:
打包my.path.to;
class ResourceBundle extends ClientBundle {
@Source("src/main/resources/my/path/to/ResourceBundle/myIcon.png")
ImageResource myIcon();
}
我是否总是必须编写@source
路径来引用它们?或者我可以告诉ClientBundle
只查看与java类相同的目录,但只是在资源中?
答案 0 :(得分:5)
如果您未使用ImageResource
对@Source
进行注释,则ImageResourceGenerator
将通过ResourceGeneratorUtil.findResources()
使用
相对于ClientBundle
包的路径,附加方法名称并使用一组默认扩展来解析ImageResource
源路径(按顺序拾取扩展名:png,jpg,gif,bmp;请参阅如何通过ImageResource
注释@DefaultExtensions
。
因此,如果您将图像放入ClientBundle
的同一个包中,它们将自动解析,甚至不使用@Source
注释。如果您的图像具有相同的名称但扩展名不同,则根据之前的顺序选择第一个图像。
我不是maven用户,但apparently如果您在src/main/resources
中保留相同的包结构,则您的图片将以相同的方式被提取。从未尝试过。
答案 1 :(得分:2)
默认情况下,它将与您的java类位于同一目录中。我通常将我的图形放在resorces包的子包中。这使我的java保持清洁和分离,我不必做绝对路径。我相信../相对路径也适用,如果你想这样,但我把它放在一个子资源包中似乎更干净。
com.vf.client.resources
com.vf.client.resources.images
com.vf.client.resources.css
/**
* Draggable cursor icon.
*
* <br />
* Example
*
* <img src="images/cursorDragArrowSmall.png" />
* @return ImageResource
*/
@Source("images/cursorDragArrowSmall.png")
ImageResource cursorDragArrowSmall();