2012-09-13 1 views
2

포함 된 스크립트의 디렉토리 경로 얻는 방법 :은 NAnt -이 같은 많은 다른은 NAnt 스크립트에 포함 나는 일반은 NAnt 스크립트 (일반적인 목표와 정수를 포함한)가

<include buildfile="<path>\common.build" verbose="true" /> 

호출 스크립트가를 여러 폴더에.

포함 된 스크립트에서 포함 된 스크립트가있는 동일한 디렉토리에서 파일을 읽어야합니다. "현재 디렉터리"는 호출 스크립트의 디렉터리로 설정됩니다 (포함되지 않음). 포함 된 스크립트의 디렉토리 경로는 어떻게 얻을 수 있습니까? 나는 (포함 된 스크립트 내부) 다음과 같은 구문을 사용하는 경우

는 :

${ path::get-directory-name(project::get-buildfile-path()) } 

는 차라리 포함 된 스크립트의보다 호출하는 스크립트의 폴더 경로를 얻을.

포함 된 스크립트의 경로를 가져올 수있는 방법이 있습니까?

감사합니다. Ivan.

+0

작성한 내용은 http://stackoverflow.com/questions/5506203/nant-cant-get-current-directory-from-include- NAnt 버전을 사용하고 있습니까? – skolima

+0

아니에요. 거기있는 사람은 저와 똑같은 문제가 있습니다. 문제는 다음과 같습니다. 포함 된 파일에서 포함 된 파일의 디렉토리를 가져올 수 없습니다. NAnt 0.91을 사용합니다. – Ivan

답변

4

나의 제안 :

<property name="include.buildfile.path" value="C:\foo\common.build" /> 
<include buildfile="${include.buildfile.path}" verbose="true" /> 

나는 당신이이 같은 원하는 디렉토리 경로에 액세스 일반적인 스크립트 :

${path::get-directory-name(include.buildfile.path)} 
를 같은 호출하는 스크립트 내부의 속성에 호출 된 스크립트 파일의 경로를 정의
+0

의장, 안녕! 네, 매우 비슷한 것으로 끝났습니다 - 필자는 포함 된 파일을 포함하는 디렉토리 경로로 속성을 정의한 다음이를 사용하여 파일을 포함시키고 내부에 사용합니다. 감사! – Ivan

+0

@ 아이언 (Ivan) : 그게 당신이 함께 갔다면,이 대답 옆에있는 '수락'(초록색 '체크'마크)을 눌러야합니다. – skolima

+0

문제 없습니다. 허용. 감사. – Ivan

3

나는 NAnt 소스 코드를 보았습니다. 달성하고자하는 것은 기존 또는 사용자 정의 함수로 수행 할 수 없습니다. NAnt는 포함 된 파일을 프로젝트 구조에 추가하고 ProjectLocationMap을 사용하여 파일 이름을 다시 가져옵니다. 어느 노드에서 왔는지는 internal으로 표시되어 있으므로 스크립트로 추출 할 수도 없습니다. 마스터 스크립트와 관련하여 파일의 상수 위치를 가정하고 (또는 그곳에서 내려가는 등) 임시 해결책을 찾아 보거나 필요한 기능을 제공하는 기능을 갖춘 NAnt의 사용자 정의 버전을 빌드 할 수 있습니다. 첫 번째 해결책은 예쁘지 않다. 두 번째 것은 쉽지 않다.

+0

당신의 노력에 감사드립니다. 나는 "예쁜 것은 아니지만"쉬운 해결책을 고집했습니다 :) 의장에게 회신을보십시오. – Ivan