2011-01-11 85 views
12

我有一個共同的問題,可能有無數的方法來解決它。我在尋找一個優雅,簡單的解決這個典型場景:如何根據Eclipse中的變量設置Ant屬性?

我在Eclipse中使用Ant構建文件(build.xml文件)構建文件使用屬性文件(build.properties)的項目。在該屬性文件,我想設置一個指向Eclipse項目的根目錄下,如一個屬性:

project.root = /path/to/eclipse/workspace/projectName 

或較好的是:

project.root = ${path.to.eclipse.workspace}/projectName 

我怎麼做這樣的方式即:對不同的路徑項目的根不同的機器(即在團隊環境中)

    1. 作品允許Ant build.xml文件是exe文件在eclipse中cuted
    2. 允許ant build.xml文件在eclipse之外執行(即,從命令行)
    3. 允許build.properties文件在除項目根目錄之外的目錄存在
  • +0

    我甚至會滿足於能完美解決的擔憂#1和#2的部分解決方案。 3號和4號更難。 – gMale

    回答

    7

    我想我正在尋找的是添加以下到build.properties文件:

    project.root = ${basedir} 
    

    或者,我可以只使用BASEDIR財產每當需要project.root

    我恰好在看着source code for ivy.properties,我看到正在使用的屬性屬性被使用。我只是測試和驗證,這家酒店無論是從內部Eclipse和命令行,以及在不同的目錄使螞蟻在打電話時,如工作在不同的機器上:

    ant -f /path/to/eclipse/workspace/projectName/build.xml 
    

    當我一分鐘,我將驗證這在將屬性文件導入到不同位置(如src/main/resources/config/ivy/ivysettings.xml中)時也適用。

    +0

    謝謝,也幫助了我。 –

    8

    查看窗口 - >首選項 - >螞蟻 - >運行 - >屬性定義自定義Ant屬性應該可用於從Eclipse調用的任何ant腳本。從命令行調用腳本時,只需手動設置相同的屬性即可。

    你的build.properties文件可以存在,只要你喜歡。使用普通的Ant工具將其導入腳本。

    +0

    謝謝您花時間回覆。不幸的是,你的迴應沒有直接解決上述任何問題,因爲1)ant運行時屬性不包含項目根路徑的條目。我猜我可以添加$ {workspace_loc}或類似的屬性列表,但這不會在eclipse外工作。 2)從命令行調用腳本時手動設置屬性不能很好地擴展到團隊環境。 3)最後,當導入屬性文件時,相對路徑可以改變,因此需要絕對路徑,這是一個問題。 – gMale

    3

    對於我的項目archieve。

    ProjectName <dir> 
    |_ ant <dir> 
        |_ ant.xml 
    

    你的情況下,可以只簡單地改變螞蟻的xml文件中,<project default="main" basedir="../"/>

    然後,我可以使用的

    例如可變獲得項目的根<echo message= "Project Root: ${basedir}" />

    3

    如果你需要比瑣碎BASEDIR東西更多=
    Ant4Eclipse - 一堆螞蟻任務訪問來自螞蟻在Eclipse中配置 -
    可以幫助你。只是用它作爲是或者用grep的代碼,並選擇相關部分..

    +0

    謝謝,我會研究這個。這聽起來很有用。 – gMale

    1

    您可以設置從日食

    轉到您的Ant構建屬性Ant構建蝕相對性能和參數部分,你可以設置屬性使用-D如下

    -Dworkspace="${workspace_loc}" -Dproject_dir="${project_loc}" 
    

    (這裏的workspace_loc和project_loc是eclipse變量)。這些屬性可以像常規的性能Ant構建腳本訪問,例如:

    <echo message="${workspace}" /> 
    <echo message="${project_dir}" /> 
    

    reference screenshot

    相關問題