Чтение из файла .properties в Ant build.xml
Мне нужна помощь с использованием файлов свойств Ant. У меня есть следующее:
Я хочу прочитать атрибут on
из моего файла свойств, и если значение 1
, я хочу выполнить задачу в файле сборки. В противном случае я хочу, чтобы он ничего не делал. Может ли кто-нибудь направить меня на то, как это сделать?
Ответы
Ответ 1
Это должно быть все, что вам нужно сделать:
1.Загрузите последнюю версию ant-contrib JAR и поместите в lib папку вашей установки Ant.
2.Вставьте свои свойства в свой сборник script
<property file="build.properties"/>
3. Добавьте следующую запись taskdef в свою сборку script
<taskdef resource="net/sf/antcontrib/antcontrib.properties"/>
4. И наконец, определите задачу if так:
<if>
<equals arg1="${on}" arg2="1" />
<then>
<echo message="I am going to do something here" />
</then>
<else>
<echo message="I am going to do nothing" />
</else>
</if>
Обратите внимание, что вы можете добавить идентификатор к свойствам, которые вы импортируете из файлов свойств. Например, вы можете сделать свой импорт так:
<property file="build.properties" prefix="uniqueprefix"/>
И тогда вы будете ссылаться в своем файле "uniqueprefix.on" вместо простого 'on'.
<equals arg1="${uniqueprefix.on}" arg2="1" />
Вы можете использовать встроенную условную задачу из Ant, но я чувствую, что если вам это нужно, вам будет лучше с дополнительными функциями, которые ant -contrib приносит в таблицу. Кроме того, обратите внимание, что его стандарт позволяет назвать ваш файл сборки как "build.xml", а не "ant.xml". Как бы то ни было, Ant не сможет автоматически найти его, учитывая имя, которое вы использовали. Удачи.
Ответ 2
Мне кажется, что вы хотите реализовать что-то вроде ниже заданной задачи.
<property file="build.properties" />
<target name="default" description="Homeworks">
<condition property="on">
<equals arg1="{on}" arg2="1" />
</condition>
<antcall target="taska" />
<antcall target="taskb" />
</target>
<target name="taska" if="on">
<echo message="Testing task one" />
</target>
<target name="taskb" unless="on">
<echo message="Testing task two" />
</target>
Сообщите мне, если вы хотите пояснить подробные сведения.
Ответ 3
Если вы не хотите писать свою собственную задачу Ant или использовать другие библиотеки, просто "очистить" ant, посмотрите на это:
mybuild.properties:
on=on
Использовать или true или что-то в этом роде, 1 не будет работать.
build.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="project" default="default">
<property file="mybuild.properties"/>
<target name="default" depends="on, off" description="description">
<echo>default</echo>
</target>
<target name="on" if="${on}">
<echo>on</echo>
</target>
<target name="off" unless="${on}">
<echo>off</echo>
</target>
</project>
Ответ 4
Посмотрите на задачу состояния....
http://www.java-tips.org/other-api-tips/ant/how-to-use-condition-task.html
посмотрите, помогает ли это
Ответ 5
Подход, который выглядит сложным, но на самом деле довольно легким: напишите пользовательскую задачу ant (один простой Java-класс и 20 строк кода). Задача будет
- прочитать файл свойств (местоположение/имя можно передать как атрибут задачи)
- присвоить значение
on
свойству ant
Затем вы можете использовать это свойство ant для управления потоком.
public class MyOwnTask extends Task {
private String filename = "build.properties"; // some default value
public void setFilename(String filename) {
this.filename = filename;
}
public void execute() { // the "main" method
Properties p = new Properties();
p.load(filename);
String onValue = p.get("on");
getProject().setProperty("ON_PROPERTY", onValue);
}
}
Тогда вам понадобится <taskdef>
и что он.