2013-05-02 86 views
2

我想保留我的靜態資源不在類樹中,但將它們放在src/main/resources樹中。儘管應該使用與java類相同的路徑找到它們,例如:在GWT中將ClientBundle的資源放在哪裏?

package my.path.to;

class ResourceBundle extends ClientBundle { 
    @Source("src/main/resources/my/path/to/ResourceBundle/myIcon.png") 
    ImageResource myIcon(); 
} 

難道我一直有寫@source路徑引用它們?或者我可以不知何故地告訴ClientBundle只能看到與java類相同的目錄,但只是在資源中?

回答

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(); 
5

如果不標註您的ImageResource小號@SourceImageResourceGenerator,通過ResourceGeneratorUtil.findResources(),將使用相對於ClientBundle包的 路徑,附加方法名稱並使用一組默認擴展名來解析源路徑ImageResource(按順序拾取擴展名:png,jpg,gif,bmp;請參閱ImageResource如何通過@DefaultExtensions進行註釋)。

因此,如果你把你的圖片到同一個軟件包你ClientBundle的,他們將得到自動解決,甚至沒有使用@Source註解。如果您的圖像具有相同的名稱但擴展名不同,則根據先前的順序選擇第一個圖像。

我不是maven用戶,但是apparently如果您在src/main/resources中也保持相同的包裝結構,您的圖像將以相同方式拾取。儘管從未嘗試過。

相關問題