2

我想将我的静态资源保留在类树之外,但将它们放在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 类相同的目录中查找,但只在资源中查找?

4

2 回答 2

5

如果你没有用 s 注释你ImageResource的 s @SourceImageResourceGeneratorviaResourceGeneratorUtil.findResources()将使用相对于ClientBundle包的路径,附加方法名称并使用一组默认扩展名来解析ImageResource源路径(扩展名按顺序选取:png、jpg , gif, bmp; 查看如何ImageResource通过@DefaultExtensions) 进行注释。

因此,如果您将图像放入同一包中ClientBundle,它们将自动解析,甚至无需使用@Source注释。如果您有同名但扩展名不同的图像,则根据之前的顺序选择第一个。

我不是一个 maven 用户,但显然如果你在 中保持相同的包结构src/main/resources,你的图像将以同样的方式被拾取。不过没试过。

于 2013-05-02T15:22:55.670 回答
2

默认情况下,它将在与您的 java 类相同的目录中查找。我通常将我的图形放在资源包的子包中。这使我的 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();
于 2013-05-02T14:10:08.797 回答