2012-05-22 1 views
8

디렉토리 집합에서 모든 클래스를 classpath에 추가하는 방법은 무엇입니까? 나는 재산 다음 한개미의 디렉토리 집합에서 모든 클래스를 classpath에 추가하는 방법은 무엇입니까?

:

lib3dir

class.dirs = lib1dir, lib2dir는이 디렉토리에서 클래스가 있습니다.
이 디렉토리의 모든 클래스를 classpath에 추가 할 수 있습니까? 같은

뭔가 :

<classpath> 
    <dirset dir="${root.dir}" includes="${class.dirs}/**/*.class"/> 
</classpath> 

또는

<classpath> 
    <pathelement location="${class.dirs}" /> 
</classpath> 

는하지만이 예제는 물론, 작동하지 않습니다.

답변

12

당신은 당신의 특정 디렉토리에서 모든 class 파일을 포함하는 경로를 설정할 수 있습니다 당신은 클래스 경로로이 경로를 사용하려면

<path id="mypath"> 
    <fileset dir="${root.dir}"> 
    <include name="lib1dir/**/*.class lib2dir/**/*.class lib3dir/**/*.class"/> 
    </fileset> 
</path> 

그러나, 당신은 단지 루트 폴더를 참조 할 필요가,

(클래스 경로에 대한 예)를 사용할 때

<path id="build.classpath"> 
    <dirset dir="${root.dir}"> 
    <include name="lib1dir lib2dir lib3dir"/> 
    </dirset> 
</path> 

그런 다음 ID로 경로를 참조 : 패키지 이름이 디렉토리로 번역으로, 그렇지 않으면 당신은 ClassNotFoundError의를 얻을 것이다

<javac srcdir="${src.dir}" destdir="${build.dir}" classpathref="build.classpath" /> 
+0

모든 libdirs 디렉토리의 이름을 모르겠습니다. 이것들은 class.dirs 프로퍼티로 지정됩니다. –

+0

그런 경우 ant.contrib의 ['For' 작업] (http://ant-contrib.sourceforge.net/tasks/tasks/for.html)을 살펴 봐야합니다. 'For' iteration에서 경로 문자열을 만들기 위해서는'property's 대신에 [variable tasks] (http://ant-contrib.sourceforge.net/tasks/tasks/variable_task.html)를 사용할 필요가 있습니다 – Attila

관련 문제