2012-11-26 61 views
3

如何設置$ {ant.project.name}值?我想將其設置爲: $ {ant.project.name} = $ {basedir}

我不想從build.xml中設置項目名稱。我的想法是 - 它應該自動獲取文件夾的名稱。

這可能嗎?

回答

1

ant.project.name屬性由Ant在運行時設置,無法更改。有這樣的內置參數屈指可數,documented on the Ant website.如果你有需要的屬性,你可以改變,你可能會感興趣的ant contrib's var.

+0

當螞蟻-Dant.project.name =試驗是可能的,恕我直言,這也應該是可能的。順便說一下,我試圖通過-D分配當前文件夾名稱。在DOS中,對於(。)中的%*,執行@echo%〜n *打印當前文件夾名稱。我試圖將這個分配給屬性-Dant.project.name。 – Faisal

9

的ANT屬性ant.project.name設計返回字符串出現在您的構建文件的頂部。它有特殊的意義,不應該真正改變。

下面的例子演示瞭如何使用替代性(這應該在Windows工作以及):

<project name="demo" default="run"> 

    <basename property="my.project.name" file="${basedir}"/> 

    <target name="run"> 
     <echo message="ant.project.name=${ant.project.name}"/> 
     <echo message="my.project.name=${my.project.name}"/> 
    </target> 

</project> 

有以下輸出

run: 
    [echo] ant.project.name=demo 
    [echo] my.project.name=myprojectdirname 
+0

感謝您的回覆!我只是試圖動態/自動地將項目文件夾名稱分配給項目名稱屬性。對於例如如果我創建一個名爲'test'的項目文件夾,它應該被動態地分配給build.xml中的項目名稱屬性。如果我更改了項目文件夾的名稱,它應該反映在build.xml中,而不需要我介入。有一種方法可以設置-Dant.project.name = test。但是,我也試圖自動獲取當前文件夾的名稱。在Windows中,它非常棘手。 (。)中的%*做@echo%〜n *給我們當前的文件夾名稱。你能告訴我如何?日Thnx! – Faisal

+0

@Faisal答案已更新。我不建議覆蓋標準屬性。而是使用自定義的。 –

2

你爲什麼在這樣設定的意圖這個特定的財產,當你可以設置你的心想要的任何其他財產?它也沒有任何意義。該項目的名稱完全獨立於您檢查出的目錄的名稱。

但是,如果你堅持,你可以通過在<project>實體不設置它設置${ant.project.name}

<project basedir="." default="package"> <!-- Notice no name! --> 
    <basename property="ant.project.name" 
     file="${basedir}"/> 

    <target name="package"> 
     <echo>The name of this project is ${ant.project.name}</echo> 
    </target> 
</project> 
相關問題