2016-02-23 42 views
1

我的服務器端技術使用位於同一目錄中的兩個文件定義頁面,它們具有相同的名稱但擴展名不同:一個使用.html擴展名,另一個使用.xsp。在這些文件中,編譯時生成器會生成一個將被服務器加載和執行的java .class。 在最後的戰爭中,我想排除.html和.xsp文件,因爲它們不是必需的。來自WAR的高級資源排除規則使用Maven

現在的問題是:我怎樣才能排除.html有一個關聯的.xsp,同時保持沒有關聯.xsp的.html?資源過濾器目前使用文件名稱模式,但這在我的情況下是不夠的。有沒有辦法編寫一個自定義過濾器來檢查.xsp的存在,然後指示war插件包含.html或不包含?

+0

創建自己的插件,也許擴展資源插件?用exec插件調用腳本? –

+0

我會問谷歌有關,並尋找'XSP Maven的插件'值得做... – khmarbaise

回答

0

我終於成功地試驗了兩種解決方案:

  1. 擴展Maven的戰爭插件
  2. 後處理WAR文件

我看着Maven的戰爭插件的源代碼,但由於一些有趣的方法(例如:收集任務列表)是私密的,因此幾乎不可能擴展。因此,我不得不克隆整個項目並注入我的代碼。這種方法很有效,但這並不令人滿意,因爲我不希望隨着時間的推移,原始插件不斷髮展。

後期處理實際上更容易。我在創建戰爭之後創建了另一個在包裝階段執行的插件。這個插件簡單地創建一個新的臨時戰爭,通過複製原始的內容,減去不需要的文件。最後,它將臨時戰爭取代原來的戰爭。從長遠來看,這聽起來更安全。