Ant – javascript 사용

Ant script에서  Apache BSF 또는 JSR 223을 지원하는 스크립트를 정의/실행시킬 수 있다.  <script>,<scriptdef>등이 있는데, 해당 task는 Ant의 기본 library로 실행 시킬 수 없고, 확장 library를 추가시켜주어야 한다. (script task 메뉴얼에서 반드시 library dependency를 확인할 것.)

Ant 1.7 이상 부터는 manager속성을 통해  javascript를 지원하는 엔진을 고를 수 있다.

  • bsf: BSF scripting manager  사용
  • javax:  use the javax.scripting manager 사용 (JDK6  이상에서만 작동).
  • auto: 기본값으로  (존재한다면) BSF 사용,  없으면 javax.scripting 사용

javax.scripting은 계속 exception이 발생하여, 속 편하게 아래 예제의 주석에 기입한  bsf.jar, common-logging.jar, js.jar을 내려받아 사용하는게 낫다.

<javascirpt를 이용하여 property의 값을 재 세팅하는 예제>

<target name="test.re.property">
	<property name="test.prop" value="hello world"/>
	<echo>BEFORE:${test.prop}</echo>
	<re.set.property.value property.name="test.prop" property.value="hello ant"/>
	<echo>AFTER:${test.prop}</echo-->

</target>
<!--
	property value reset scriptdef by nangpuni
	this scriptdef only can be run under Ant 1.8.3 later with
	bsf.jar 2.4 or later (include commons-logging.jar and js.jar with 1.5R4 and higher)
	see more ant scriptdef task
-->
<scriptdef name="re.set.property.value" language="javascript" manager="bsf">

	<attribute name="property.name"/>
	<attribute name="property.value"/>

	<![CDATA[
		var prop=attributes.get("property.value");
		var propName=attributes.get("property.name");
		project.setProperty(propName, prop);			
		//self.log(propName+":"+project.getProperty("property.name"));

	]]>
</scriptdef>

 

댓글 남기기