記錄今天吧Liferay項目從Ant切換到Maven的教訓吧。
為了明天的Demo,我們吧所有原來用Ant構建的Liferay項目全部切換到了Maven,結果在把Maven構建的某個theme應用部署到Liferay伺服器時始終看不到效果。我忙活了半個小時,才發現了原因,是因為_diffs下面的內容根本就沒有複製到Theme根目錄中。
因為我們以前都是用Ant來打包和部署的,而Liferay的Ant指令碼會自動的把_diffs下面的所有資源都merge到外層(也就是theme應用根目錄下)。我們當時以為_diffs 直接複製過去就可以了,也沒有看最終artifact的結構。所以就出錯了。
回到家,我仔細的看了Liferay Ant構建Theme項目的過程,原來_diffs目錄是在執行create 的target時候建立的,並且它的作用僅僅是方便開發人員去更改與架構不同的資源。所以切換到Maven,這個目錄本身沒任何作用,只有這個目錄下的內容才有用。
建立:
<target name="create"> <if> <or> <not> <isset property="theme.name" /> </not> <not> <isset property="theme.display.name" /> </not> </or> <then> <echo message="This task must be called by create.bat." /> </then> <else> ... <copy todir="${theme.dir}"> <fileset dir="${project.dir}/tools/theme_tmpl" /> </copy> <mkdir dir="${theme.dir}/docroot/_diffs" /> <replace dir="${theme.dir}"> <replacefilter token="@theme.name@" value="${theme.name}" /> <replacefilter token="@theme.display.name@" value="${theme.display.name}" /> </replace> </else> </if> </target>