муравей: лучший способ настроить системные свойства? - PullRequest
5 голосов
/ 03 декабря 2009

У меня есть несколько расположений файлов / исполняемых файлов, которые могут различаться в зависимости от того, на каком компьютере я их запускаю, и я хотел бы как-то абстрагировать их через свойства ant. Какой лучший способ сделать это? Есть ли общесистемный скрипт настройки муравья, который вызывается? Или я могу сделать такой скрипт?

Ответы [ 3 ]

10 голосов
/ 06 декабря 2009

В дополнение к решению Владимира у вас может быть файл свойств по умолчанию для каждой из ОС или другая, на которой вы можете развернуть систему сборки. Используйте $ {os.name} (и другие системные свойства Java), чтобы установить путь. Например

<property file="build-${os.name}.properties">

Эти файлы также могут быть сохранены и проверены в вашей системе контроля версий.

8 голосов
/ 05 декабря 2009

Я использую более или менее стандартные build.properties и build-local.properties файлы.

Первый содержит значения по умолчанию, общие для всех сред, второй - только исключения. Первый проверяется в Subversion, а другой нет.

РЕДАКТИРОВАТЬ : скопировать / вставить отличную идею Акра

Кроме того, у вас может быть файл свойств по умолчанию для каждой из ОС или другой, на которой вы можете развернуть свою систему сборки. Эти файлы также могут быть зарегистрированы в вашей системе контроля версий.

Затем скрипт Ant будет включать все файлы следующим образом (помните: в Ant первое определение выигрывает):

<property file="build-local.properties"/>
<property file="build.properties"/>
<property file="build-${os.name}.properties">
1 голос
/ 04 декабря 2009

Установите файл сборки ant с именем properties.xml, в котором вы должны определить свойства, которые хотите настроить.

Вот пример файла properties.xml, который я использую для своих проектов (я адаптировал его из одной из книг по Ant):

<?xml version="1.0" encoding="UTF-8"?>
<project
  name="workspace-properties"
>
  <dirname
    property="workspace-properties.basedir"
    file="${ant.file.workspace-properties}"
  />

  <!--
    ==========================================================
    Load Environment Variables
    ==========================================================
  -->
  <!-- #Load environment variables -->
  <property environment="env" />

  <!-- this is here to deal with the fact that an IntelliJ IDEA build
    has no ant home
  -->
  <property
    name="ant.home"
    value="${env.ANT_HOME}"
  />

  <!-- get Unix hostname, and set to Windows comparable name -->
  <!-- #Trick to get host name x-platform -->
  <property
    name="env.COMPUTERNAME"
    value="${env.HOSTNAME}"
  />

  <!--
    ==========================================================
    Load property files
    Note: the ordering is VERY important.
    ==========================================================
  -->
  <!-- #Allow even users property file to relocate -->
  <property
    name="user.properties.file"
    location="${user.home}/.build.properties"
  />

  <!-- Load the application specific settings -->
  <!-- #Project specific props -->
  <property file="build.properties" />

  <!--
    ==========================================================
    Define your custom properties here.
    You can overwrite them through build.properties and
    ${user.home}/.build.properties
    ==========================================================
  -->

  <property name="myexec1" location="/usr/bin/myexec1"/>
  <property name="myexec2" location="/usr/bin/myexec2"/>

</project>

Важно, чтобы здесь было как можно больше полезных значений свойств по умолчанию, тогда вы даже не сможете создавать пользовательские build.properties файлы.

Тогда вы просто <import> этот файл в build.xml вашего проекта.

<project
  name="my-project"
>
  <!-- this is done, so you may import my-project somewhere else -->
  <dirname
    property="my-project.basedir"
    file="${ant.file.my-project}"
  />

  <import file="${my-project.basedir}/relative/path/to/properties.xml"/>

  <target name="using.myexec1">
    <echo message="myexec1=${myexec1}"/>
  </target>
</project>

Если вам нужно пользовательское значение для myexec1 в my-project, просто перетащите специальный плоский файл build.properties в тот же каталог, где находится build.xml.

Файл build.properties может выглядеть следующим образом:

myexec1=c:/custom/path/to/myexec1.exe
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...