[java] 개미 경고 : ” ‘includeantruntime’이 설정되지 않았습니다”

다음과 같은 경고 메시지가 나타납니다.

[javac] build.xml:9: warning: 'includeantruntime' was not set,
defaulting to build.sysclasspath=last; set to false for repeatable builds

이것은 무엇을 의미 하는가?



답변

개미 런타임

간단히 설정 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모든 프로젝트에서 경고를 무시하고 전 세계적으로 적용됩니다.


답변

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

그런 다음 개미 스크립트를 다시 실행하십시오.


답변

<property name="build.sysclasspath" value="last"/>build.xml 파일에서 사용

자세한 내용 includeAntRuntimeAnt javac 에서 검색

다른 가능한 값은 여기 에서 찾을 수 있습니다


답변

나는 이것을 똑같이 직면했다. 나는 프로그램과 기능을 체크인한다. 일식에 대한 개미에 대한 이전 설정 (jdk1.6.0)과 호환되지 않는 jdk1.8에 대한 업데이트가 설치되었습니다. 해당 업데이트를 설치합니다. 지금, 내 개미 프로젝트는 성공적으로 빌드되었습니다.

사용해보십시오, 이것이 도움이 되길 바랍니다.