2014-07-11 54 views
0

我想在項目聲明後更改ant.project.name屬性。我知道這是不可取的,但這是我能解決我的項目的一個大問題的唯一方法。 我發現了一些有趣的職位像這樣的:Set Ant project name

Ant - How to set ${ant.project.name} to project folder name?

而不是使用:

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

我想直接設置使用「價值」的ant.project.name代替屬性「文件」。 你有什麼想法或建議嗎?或者其他方式?

謝謝!

回答

2

正如其他人已經提到,不建議改變標準螞蟻屬性的值。
一旦設置的屬性一旦設置是不可改變的,並有充分的理由。
重寫屬性應該明智而且很少使用。

酒店ant.project.name通常是通過項目
=> <project name="whatever">的name屬性設置,但它不是強制性的,意味着
<project> ... </project>足以使你的XML有效antscript。

在你的情況<echo>${ant.project.name}</echo>將回聲${ant.project.name}
物業沒有設置,所以你可能在你的腳本屬性任務創建它:
<property name="ant.project.name" value="whatever"/>
但是,使用通常用於「螞蟻內部」的屬性名稱似乎不是最佳選擇。

如果在項目標籤中設置了屬性,則可以通過script task覆蓋該值,使用內置JavaScript引擎和ant api,f.e. :

<project name="foo"> 

<property name="bla" value="foobar"/> 

<echo>1. $${ant.project.name} => ${ant.project.name}</echo> 

<script language="javascript"> 
    project.setUserProperty('ant.project.name', project.getProperty('bla')); 
</script> 

<echo>2. $${ant.project.name} => ${ant.project.name}</echo> 

</project> 

輸出:

[echo] 1. ${ant.project.name} => foo 
[echo] 2. ${ant.project.name} => foobar 

注意:爲ant.project.name不是一個 '正常' 的性質(通過Ant腳本中的屬性任務中聲明的那些屬性),你有使用方法project.setUserProperty(String, String)而不是project.setProperty(String, String)。 Userproperties是通過-Dkey = value命令行參數定義的屬性,並享有特殊保護。

螞蟻還提供了一堆builtin properties

相關問題