2013-04-30 2 views
3

다음은 개미 스크립트 (프로젝트 요소 등있어)의 단순화 된 버전입니다.개미 javac 다른 프로젝트 컴파일 된 클래스를 찾을 수 없습니다

저는 개미를 처음 접했고 'compileTests'가 컴파일되지 않는 이유를 알 수 없지만 'compileFoo'는 컴파일되지 않습니다.

compileTests 프로젝트의 클래스가 compileFoo 프로젝트에서 컴파일 된 클래스를 찾을 수 없으므로 '패키지가 존재하지 않습니다.'라는 오류가 발생합니다. 파일 시스템에서 파일을 볼 수는 있어도 괜찮습니다. 그들에 대한 경로가 classpath에 나열되어 있습니다 (이것이 필요하다고 가정합니다).

분명히 이해할 수없는 기본적인 것이 있습니다. 누군가가 설명하여 도움을받을 수 있습니까?

<path id="build_classpath"> 
    <fileset dir="${other_required_jars}" includes="**/*.jar" /> 
    <fileset dir="${foo_build_location}" includes="**/*.class" /> 
</path> 


<target name="compileFoo" description="compile"> 
    <javac srcdir="${foo_source_directory}\test-src" includeantruntime="false" destdir="${foo_build_location}" includes="**/*.java" excludes="" debug="on" optimize="off" deprecation="on" verbose="on"> 
     <classpath refid="build_classpath" /> 
    </javac> 
</target> 


<target name="compileTests" description="compile"> 
    <javac srcdir="${test_source_directory}\test-src" includeantruntime="false" destdir="${test_build_location}" includes="**/*.java" excludes="" debug="on" optimize="off" deprecation="on" verbose="on"> 
     <classpath refid="build_classpath" /> 
    </javac> 
</target> 

답변

3

클래스 경로가 잘못되었습니다. 클래스 경로에는 .class 파일 집합이 포함되어 있지 않습니다. 패키지 트리의 루트를 포함하는 한 세트의 jar 또는 디렉토리를 cnt합니다. 클래스 패스에는 단순히 하나의 요소 만 포함해야합니다. ${foo_build_location} :

<path id="build_classpath"> 
    <fileset dir="${other_required_jars}" includes="**/*.jar" /> 
    <pathelement location="${foo_build_location}"/> 
</path> 
+0

JB Nizet, 답장을 보내 주셔서 감사합니다. 필자는 build_classpath가 여전히 다른 jar에 필요하다는 것을 보여주기 위해 이것을 편집했습니다. 따라서 테스트 프로젝트도이를 필요로하므로 삭제할 수 없습니다. 이것을 편집하여 기존의 jar와 foo 프로젝트의 클래스를 모두 사용하는 방법을 알고 계십니까? –

+0

클래스 패스에 디렉토리 자체를 광고하는 방법과 모든 .class 파일을 광고하는 방법을 보여주기 위해 내 대답을 편집했습니다. –

+0

절대적으로 자리에! 고마워. 이것은 모두가 같은 상황에서 작업해야하기 때문에 아마도 나쁜 말입니다.하지만 개미 문서는 포함되지 않은 자바 클래스에 대한 정보가 포함되어 있다는 점에서별로 도움이되지 않습니다. 나는 방금 요소 목록과 각 요소 내에서 유효한 해당 요소와 같은 것이 있다고 가정했습니다. 도와 주셔서 정말로 고맙습니다! –

관련 문제