我想創建一個Ant構建文件,其中包含一些文件作爲一種插件。我可以在運行時找到並將文件導入Ant構建文件嗎?
因此,如果我想激活項目中的功能 - 比如說pmd-checking - 我將pmd.xml複製到一個目錄中,並且build.xml接受啓動想法,pmd.xml存在並導入它,這樣可以爲構建提供新的目標。
但「導入」任務只能用作頂級任務,所以我不知道如何重新設置此功能。這是可能的螞蟻,如果是這樣,我該怎麼做?
編輯:我寧願有一個解決方案,允許新目標出現在ant -p
列出的列表中。
我想創建一個Ant構建文件,其中包含一些文件作爲一種插件。我可以在運行時找到並將文件導入Ant構建文件嗎?
因此,如果我想激活項目中的功能 - 比如說pmd-checking - 我將pmd.xml複製到一個目錄中,並且build.xml接受啓動想法,pmd.xml存在並導入它,這樣可以爲構建提供新的目標。
但「導入」任務只能用作頂級任務,所以我不知道如何重新設置此功能。這是可能的螞蟻,如果是這樣,我該怎麼做?
編輯:我寧願有一個解決方案,允許新目標出現在ant -p
列出的列表中。
在導入任務文檔中沒有明確說明,但該任務接受一個文件集作爲單個文件的替代文件。 因此這一點,在頂層,應該做的伎倆,並創建目標由ant -p
上市:本
<property name="plugins.dir" value="plugins" />
<fileset id="plugin.modules" dir="${plugins.dir}">
<include name="**/*.xml" />
</fileset>
<import>
<fileset refid="plugin.modules" />
</import>
一個皺紋是必須有至少一個插件,在「插件」目錄,否則導入將失敗。 您只需創建一個佔位符文件 - 比如所謂empty.xml
:
<project />
一旦在那裏,你只需要投入任何新的插件的插件目錄,以及將來的版本,他們將被導入。
我不確定你想要的是概念上可行的。 -p
命令行參數不執行任何任務,它只是解析文件。你想要的東西需要執行。
但是,我會給ant-contrib項目一看。它有一個條件<if>
任務,這可能會使頂級導入僅在需要時才能工作。
在import任務的文檔中,請注意optional
屬性。將其設置爲true
,缺少包含將不會破壞構建。
因此,如果找到pmd.xml
,但如果不是,則不會破壞構建。
未經測試,因此我不確定ant -p
包括導入文件中的目標(如果找到)。
'ant -p'列出在導入文件中定義的目標。我沒有看到這個屬性,這有點幫助。但我更喜歡,如果我可以在運行時獲得插件。 – Mnementh 2008-11-13 07:21:30
構建文件如何知道何時包含該文件?您將需要傳遞一個屬性作爲參數,並將一些條件目標放入構建文件中。這隻會在執行時才起作用,而不是「-p」選項「。 請給出關於用例的更多細節。 – 2008-11-13 13:11:13
這是一個可能的解決方案,但新的目標不在'ant -p'列表中。 – Mnementh 2008-11-13 00:57:03