2017-07-12 23 views
0

我有我的生成文件中定義了以下默認目標:調用Ant目標直接和間接地根據病情

<target name="main" depends="generate.doc" unless="generated.doc.present"/> 

當DOC文件已經存在,則該屬性設置。在這種情況下,我不想做任何事情。但是,它不起作用,因爲依賴目標總是在條件評估之前執行。

我仍然需要能夠直接調用依賴目標並執行它,而不管輸出是否已經存在。因此,這樣的事情是行不通的:

<target name="main" depends="generate.doc"/> 
<target name="generate.doc" unless="generated.doc.present">...</target> 

有沒有在主要目標中使用antcall的解決方案?

+0

'generated.doc.present'屬性是如何設置的?它是設置在Ant的內部還是外部?如果它被設置在Ant中,它是在「」的內部還是外部? –

+0

我對這個問題的描述有點困惑。你是說當你調用'main'時,如果文檔不存在,你只想生成文檔,但是當你直接調用'generate.doc'時,你希望它生成,不管是什麼? – CAustin

+0

@Chad Nouis,該屬性在同一個構建文件中和''之外設置爲''。 –

回答

0

在下面的示例中,main<target>已被更改爲具有兩個依賴關係。名爲-pre-conditions的新<target>將在generate.doc之前運行。

-pre-conditions<target>僅在已設置generated.doc.present屬性時才設置skip-generate.doc屬性。

generate.doc<target>已更改,因此如果-pre-conditions設置了skip-generate.doc屬性,它將被跳過。

通過這些更改,generate.doc將在直接調用時始終運行。

<target name="-pre-conditions"> 
    <condition property="skip-generate.doc"> 
     <isset property="generated.doc.present"/> 
    </condition> 
</target> 

<target name="main" depends="-pre-conditions, generate.doc"/> 

<target name="generate.doc" unless="skip-generate.doc"> 
    <echo>generate.doc running</echo> 
</target>