2012-02-03 4 views
5

어떻게 Ant 태스크를 사용하여 Java 클래스 이름을 파일 경로로 변환합니까?Ant : 클래스 이름을 파일 경로로 변환

예를 들어, foo.bar.Duck을 포함하는 속성이 주어진다면 foo/bar/Duck.class을 얻고 싶습니다.

<pathconvert><regexpmapper>의 관점에서이를 구현하려고 시도했지만 실패했습니다.

답변

0

여기에는 Ant resourcesunpackagemapper을 사용하는 다른 방법이 있습니다.이 방법은이 용도로 설계되었습니다. 반대로 package mapper도 사용할 수 있습니다. 훨씬 간단

<echo message="File: ${toString:file.name}" /> 

내가 이것에 대한 개미 스크립트 자바 스크립트를 사용하여 기분이

[echo] File: foo/bar/Duck.class 
+0

이 솔루션은 ** 만 ** 자원이 다른 곳에서 찾을 수 있습니다 만하면 작동합니다. 그렇지 않으면 [@matt] (http://stackoverflow.com/a/9135198/1099452)의 솔루션을 사용하십시오. – lucasvc

3

다음은이 작업을 수행 할 수있는 가능한 방법 :

<property name="class.name" value="foo.bar.Duck"/> 

<loadresource property="file.name"> 
    <string value="${class.name}" /> 
    <filterchain> 
    <replaceregex pattern="\." replace="/" flags="g" /> 
    <replaceregex pattern="$" replace=".class" /> 
    </filterchain> 
</loadresource> 

이것은 file.name 특성에 원하는 foo/bar/Duck.class을 넣습니다.

0

을 산출 :

<property name="class.name" value="foo.bar.Duck"/> 

<resources id="file.name"> 
    <mappedresources> 
    <string value="${class.name}" /> 
    <unpackagemapper from="*" to="*.class" /> 
    </mappedresources> 
</resources> 

당신은 부동산 도우미 구문 ${toString:...} 예에 의해 자원 값을 사용

 <property name="class.name" value="foo.bar.duck" /> 
     <script language="javascript"> 
      var className = project.getProperty("class.name"); 
      println("before: " + className); 
      var filePath= className.replace("\\", "/"); 
      println("File Path: "+filePath); 
      project.setProperty("filePath", filePath);    
     </script> 
     <echo message="${filePath}" /> 

참고 : 변수 이름을 인수 (예 : var wsPath)로 지정하면 오류가 발생할 수 있습니다.

사의 씨 https://stackoverflow.com/a/16099717/4979331

관련 문제