2014-05-20 2 views
0

Ant를 사용하여 swf 출력 파일을 빌드합니다. build.xml, package.config 및 directory.properties 파일과 함께 프로젝트 디렉토리 (프로젝트 src/*. as 파일과 함께)에 있습니다. package.config 파일은 Nuget에 의해 외부에서 만든, 그래서 그것을의 값에 의존 할 필요가있다 : 내가 필요로하는 다음xml 속성을 ant build.xml 파일에 전달

<property file="package.config" /> 

:

의 build.xml에서 지금
<packages> 
    <package id="Lib1" version="1.0" /> 
    <package id="Lib2" version="1.0" /> 
</packages> 

내가 파일을 추가 해요 이름에 포함 된 라이브러리 (compiler.include-라이브러리)를 포함하는 package.id 및 package.version 예 :

<include name="package.id" + "package.version" + ".swc" /> 

불행하게도 나는 이런 식으로 할 수 없습니다. 어딘가에 패키지 속성을 저장 한 다음 태그에서 이름 속성으로 전달하는 데 사용해야합니다. 미리 감사드립니다.

답변

2

한 가지 가능한 솔루션은 내장 (자바 1.6.0_06 이후) 자바 스크립트 엔진을 사용하여 script task와 함께 xmlproperty task을 사용하는 것입니다 :

당신은 더 다음과 같습니다 뭔가를 작성하게 될 겁니다. Nuget에서

을 감안할 때 XMLFILE :

<packages> 
<package id="Foo" version="1.0"/> 
<package id="Bar" version="1.0"/> 
</packages> 

개미 조각 사용하여 주어진 XMLFILE :

<project> 

<xmlproperty file="yournugetfile.xml" collapseAttributes="true"/> 

<!-- show properties from xmlpropertyfile --> 
<echoproperties prefix="packages"/> 

<!-- produce includes from those package properties --> 
<script language="javascript"> 
<![CDATA[ 
var pids = project.getProperty('packages.package.id').split(','); 
var pvers = project.getProperty('packages.package.version').split(','); 
var incl = ""; 
for (i=0; i < pids.length; i++) { 
    incl += pids[i] + pvers[i] + '.swc' + ','; 
} 
project.setProperty('cincludes', incl.substring(0, incl.length - 1)); 
]]> 
</script> 

<echo>$${cincludes} => ${cincludes}</echo> 

<!-- demonstrate possible use --> 
<echoxml> 
<compiler.library-path dir="some/path" append="true"> 
    <include name="${cincludes}"/> 
</compiler.library-path> 
</echoxml> 

</project> 

출력 :

[echoproperties] #Ant properties 
[echoproperties] #Tue May 20 16:37:54 CEST 2014 
[echoproperties] packages.package=, 
[echoproperties] packages.package.id=Foo,Bar 
[echoproperties] packages.package.version=1.0,1.0 
[echo] ${cincludes} => Foo1.0.swc,Bar1.0.swc 
<?xml version="1.0" encoding="UTF-8"?> 
<compiler.library-path append="true" dir="some/path"> 
    <include name="Foo1.0.swc,Bar1.0.swc" /> 
</compiler.library-path> 
+0

다음 정보를 제공해 주셔서 감사합니다. 필요한 것은 xml 파일을 xmlproperty 작업으로 할당하는 것입니다. 사소한 수정 후에 나는 그 건물을 작동시킬 수 있었다. :) – northmantif

+0

내 기쁨 - 도움이된다면 대답을 받아 들여야합니다. – Rebse

0

.properties 파일에서 패키지 속성을 원할 수도 있습니다. Ant를 사용하면 더 쉽게 작업 할 수 있으며 언급 한 XML 문서에서 XMLtask과 같은 추가 도구를 사용하지 않아도됩니다. Ant's documentation about how properties work. 속성은 $ {this}와 같은 참조에서 확장되며, + 사인을 연결하지 않아도됩니다.

<include name="${package.id}${package.version}.swc"/>

+0

네,하지만 난 이미 내 directory.properties 파일이 다른 프로젝트 소품 (대부분 다른 libs에 대한 경로)을 저장합니다. 난 그냥 우리가 다른 프로젝트 라이브러리에서 다른 Nuget 패키지 파일을 좋아하는 것처럼 내 XML 파일을 사용하는 방법이 필요했습니다. 친절. – northmantif

관련 문제