2012-01-17 2 views
1

빌드 할 때 시스템 클래스 경로를 무시하도록 ant의 build.xml 스크립트에서이 속성을 설정했지만 개미는 여전히 내 Java 호출에서 시스템 클래스 경로를 선택하고, 클래스 경로에 지정된 클래스 경로와 병합합니다. 빌드 스크립트.개미의 시스템 환경 변수 무시하기

<property name="build.sysclasspath" value="ignore" /> 

<path id="classpath"> 
    <pathelement path="${buildDir}/classes" /> 
    <fileset dir="${prjdir}"> 
     <include name="lib/*.jar"/> 
    </fileset> 
</path> 

<java classname="com.ibm.biginsights.fs.gpfs.LoggingInjector" failonerror="true"> 
    <classpath refid="classpath" /> 
</java> 

개미 모든 호출하면 잘 작동하기 전에 나는 $CLASSPATH envirmoent 변수를 설정 해제합니다. 어떤 아이디어가 어떤 문제입니까?

답변

2

ANT는 그 자체가 자바 프로그램이므로 작업이 동일한 시스템 클래스 경로를 사용하는 것을 방지하기 어렵습니다.

이 제대로 나는 javac 작업에 다음과 같은 속성을 설정하는 것을 권 해드립니다, 자바 빌드를 분리하려면 다음과 같이 또 다른 VM에서 실행되도록 java 프로그램을 실행할 때

<javac .... includeAntRuntime="false" includeAntRuntime="false" ... 

이와 비슷하게, 포크 속성을 설정 :

<java ...fork="true" classpathref="class.path.that.i.control"... 
+0

'fork = true'가 나를 위해 속임수를 사용했습니다! 감사. – multiholle

1

이 속성 AFAIK는 ant -Dbuild.sysclasspath=ignore을 사용하여 ant에 전달되어야하는 시스템 속성입니다. 하지만 CLASSPATH를 설정 해제하는 것은 쉬운 일입니다.

주요 프로 브람 인 IMO는 처음에 CLASSPATH 환경 변수를 사용합니다. 항상 Java를 사용하여 -cp 또는 -jar 옵션을 사용하는 것이 더 바람직하고 시스템 CLASSPATH에 의존하지 않는 것이 좋습니다. 둘 다 시스템 CLASSPATH에 의존하는 두 개의 Java 프로그램을 갖게되면이 두 프로그램의 종속성간에 충돌이 발생할 위험이 있습니다.