Как я могу получить значение текущей цели ant?
Как я могу получить значение текущей цели ant?
Существует ли какая-либо специальная переменная, которая называется TARGET?
Ответы
Ответ 1
Основываясь на проблема, вы должны исправить ant или использовать javascript:
<target name="test">
<script language="javascript">
project.setNewProperty("current_target", self.getOwningTarget());
</script>
<echo>${current_target}</echo>
</target>
Ответ 2
В ant 1.8.2 вы можете использовать ${ ant.project.invoked-target}
Однако, глядя на журналы фиксации
http://svn.apache.org/viewvc?view=revision&revision=663061
Я предполагаю, что он доступен с 1.7.1
Ответ 3
Мой ответ, используя antcontrib
<macrodef name="showtargetname">
<attribute name="property"/>
<sequential>
<!-- make temporary variable -->
<propertycopy name="__tempvar__" from="@{property}"/>
<!-- Using Javascript functions to convert the string -->
<script language="javascript"> <![CDATA[
currValue = [project-name].getThreadTask(java.lang.Thread.currentThread()).getTask().getOwningTarget().getName();
[project-name].setProperty("__tempvar__", currValue);
]]>
</script>
<!-- copy result -->
<var name="@{property}" value="${__tempvar__}"/>
<!-- remove temp var -->
<var name="__tempvar__" unset="true"/>
</sequential>
</macrodef>
Использование:
<showtargetname property="mycurrenttarget"/>
Ответ 4
Я думаю, что вы не можете, если не потратите некоторое время на кодирование своих собственных задач (http://ant.apache.org/manual/tutorial-writing-tasks.html)
Встроенные свойства, которые вы можете отобразить, следующие: basedir, ant.file, ant.version, ant.project.name, ant.java.version
Ответ 5
Если вы запустите ant с помощью -projecthelp
arg:
ant -projecthelp
вы получите список основных целей, указанных в файле build.xml(или другом файле сборки, как указано в командной строке).