在project.properties中设置构建路径

时间:2014-02-04 04:33:50

标签: java android eclipse ant build

我有一个使用ant(ant debug / release)构建的android项目来生成应用程序可执行文件。依赖项目路径已从project.properties设置如下:

android.library.reference.1=../../../backup/cocos2d-x-2.2.1/cocos2dx/platform/android/java

android.library.reference.2=../../../backup/adt-bundle-mac-x86_64-20130522/sdk/extras/google/google_play_services/libproject/google-play-services_lib

但路径与我的系统有关。我想用一些环境变量修改路径,如:

android.library.reference.1=$COCOS_HOME/cocos2dx/platform/android/java

但它不起作用。 我是否必须在ant build文件中的某处定义它? 任何形式的帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

扩展Mads的答案,你可以在随后加载的属性文件中使用环境变量,首先在build.xml文件中加载带有<property environment="env"/>元素的环境变量,然后从local.properties或project加载的.properties。在此之后,您可以按以下方式在project.properties中使用环境变量:

android.library.reference.1=${env.COCOS_HOME}/cocos2dx/platform/android/java

假设COCOS_HOME是一个环境变量。

奇怪的是,库引用路径似乎只允许我的Windows系统上的相对路径(那些* nixes?),所以我的环境变量COCOS2DX_ROOT='D:\softwares\ANDROID\cocos2d-x-2.2'不起作用。

我认为有一种更简洁的方法来解决特定于环境的路径问题,此方法使用 local.properties 文件。

只需在project.properties旁边创建一个local.properties文件(如果它不存在),并在那里定义机器特定的路径。例如,以下是 local.properties project.properties 文件的内容:

<强> local.properties

COCOS2DX_ROOT_RELATIVE=../../../cocos2d-x-2.2
ANDROID_ROOT_RELATIVE=../../../adt-bundle-windows-x86-20131030/sdk
# location of the SDK. This is only used by Ant
# For customization when using a Version Control System, please read the
# header note.
sdk.dir=D:\\softwares\\ANDROID\\adt-bundle-windows-x86-20131030\\sdk

<强> project.properties

android.library.reference.1=${COCOS2DX_ROOT_RELATIVE}/cocos2dx/platform/android/java
android.library.reference.2=${ANDROID_ROOT_RELATIVE}/extras/google/google_play_services/libproject/google-play-services_lib

由于local.properties首先在build.xml文件中加载,因此可以使用${...}表示法在project.properties中引用其中定义的属性。

答案 1 :(得分:0)

如果您将 COCOS_HOME 定义为环境变量,则可以使用property task和环境属性加载环境变量。

  

通过使用要使用的前缀设置 environment 属性。       将为每个环境变量定义属性       将提供的名称和句点加上前缀到变量的名称。

在加载属性文件之前,您需要确保加载环境变量,以便将属性文件中的属性引用扩展为具有属性的值。

例如:

<property environment="env"/>
<echo message="COCOS_HOME is set to = ${env.COCOS_HOME}"/>
<property file="android.properties"/>
<echo message="android.library.reference.1 is set to = ${android.library.reference.1}" />