답변:
간단히 설정 includeantruntime="false"
:
<javac includeantruntime="false" ...>...</javac>
당신이 사용해야하는 경우 javac
-task 여러 번 당신은 사용을 고려 할 수 있습니다 PreSetDef
자신의 정의 javac
항상 세트 것을 -task을 includeantruntime="false"
.
에서 http://www.coderanch.com/t/503097/tools/warning-includeantruntime-was-not-set :
Ant 1.8에 도입 된 잘못된 기능 때문입니다. 해당 이름의 속성을 javac 태스크에 추가하고 false로 설정 한 후 발생하는 것을 잊어 버리십시오.
에서 http://ant.apache.org/manual/Tasks/javac.html :
클래스 경로에 Ant 런타임 라이브러리를 포함할지 여부 build.sysclasspath가 설정되어 있지 않으면 기본값은 yes입니다. 스크립트의 동작이 실행되는 환경에 민감하지 않도록 일반적으로이 값을 false로 설정하는 것이 가장 좋습니다.
@Daniel Kutik이 언급했듯이 presetdef
좋은 옵션입니다. 특히 build.xml
편집 할 수 없거나 선호하지 않는 파일이 많은 프로젝트에서 작업하는 경우 (예 : 타사의 파일)
를 사용하려면 presetdef
최상위 build.xml
파일 에 다음 줄을 추가 하십시오.
<presetdef name="javac">
<javac includeantruntime="false" />
</presetdef>
이제 모든 후속 javac
작업은 본질적으로 상속 includeantruntime="false"
됩니다. 프로젝트에 실제로 개미 런타임 라이브러리가 필요한 경우 빌드 파일에 명시 적으로 추가하거나 설정할 수 includeantruntime="true"
있습니다. 후자는 또한 경고를 제거합니다.
후속 javac
작업은 원하는 경우이를 명시 적으로 변경할 수 있습니다 (예 :
<javac destdir="out" includeantruntime="true">
<src path="foo.java" />
<src path="bar.java" />
</javac>
사용하지 않는 것이 좋습니다 ANT_OPTS
. 작동하지만 경고의 목적을 무효화합니다. 경고는 빌드 가 다른 시스템에서 다르게 작동 할 수 있음을 알려줍니다 . ANT_OPTS
모든 시스템을 ANT_OPTS
같은 방식으로 사용해야하므로 사용 하면 더욱 가능성이 높아 집니다. 또한 ANT_OPTS
모든 프로젝트에서 경고를 무시하고 전 세계적으로 적용됩니다.
presetdef
내장되지 않은 Ant 작업에 대해 유사한 트릭을 만들 수 있습니까? 나는 이것을 사용해 보았지만 scalac
, 하향식 build.xml
파일은 수동으로 scalac
작업을 정의해야하기 때문에 최상위에서 설정 한 모든 것을 무시합니다.
Chet Hosey 는 여기에 좋은 설명을 썼습니다 .
역사적으로 Ant는 항상 javac 태스크에 사용 가능한 클래스 경로에 자체 런타임을 포함 시켰습니다. 따라서 Ant에 포함 된 라이브러리 및 Ant에 사용 가능한 라이브러리는 원하는지 여부에 관계없이 자동으로 빌드의 클래스 경로에 있습니다.
이것이 아마도 대부분의 사람들이 원하는 것이 아니라고 결정되었습니다. 이제 옵션이 있습니다.
"true"(includeantruntime의 경우)를 선택하면 최소한 빌드 클래스 경로에 Ant 런타임이 포함된다는 것을 알고 있습니다. "false"를 선택하면 이전 버전과 1.8 이상에서 빌드 동작이 변경된다는 사실을 받아들입니다.
이 경고를 보는 것처럼 짜증이 나더라도 빌드가 완전히 중단되면 더 행복하지 않을 것입니다. 이 기본 동작을 유지하면 수정되지 않은 빌드 파일이 Ant 버전간에 일관되게 작동 할 수 있습니다.
다니엘의 대답은 완벽하게 작동합니다. 다음은 build.xml에 추가 한 샘플 스 니펫입니다.
<target name="compile">
<mkdir dir="${classes.dir}"/>
<javac srcdir="${src.dir}" destdir="${classes.dir}" includeantruntime="false">
<!-- ^^^^^^^^^^^^^^^^^^^^^^^^^ -->
<classpath>
<path id="application" location="${jar.dir}/${ant.project.name}.jar"/>
<path id="junit" location="${lib.dir}/junit-4.9b2.jar"/>
</classpath>
</javac>
</target>
명령 줄에서 작업하는 것을 좋아한다면 빠른 답변이 실행됩니다.
export ANT_OPTS=-Dbuild.sysclasspath=ignore
그런 다음 개미 스크립트를 다시 실행하십시오.
set ANT_OPTS=-Xms40M -Xmx512M -Dbuild.sysclasspath=ignore
있습니다.
나는 이것을 똑같이 직면했다. 나는 프로그램과 기능을 체크인한다. 일식에 대한 개미에 대한 이전 설정 (jdk1.6.0)과 호환되지 않는 jdk1.8에 대한 업데이트가 설치되었습니다. 해당 업데이트를 설치합니다. 지금, 내 개미 프로젝트는 성공적으로 빌드되었습니다.
사용해보십시오, 이것이 도움이 되길 바랍니다.