2014-10-21 3 views
1

저는 Ant를 처음 사용하고 프로젝트를 컴파일하는 데 문제가 있습니다. 내 프로젝트에 여러 개의 .properties 파일이 있습니다. src/. 내 build.xml (아래 게시 됨)을 통해 .WAR으로 프로젝트를 컴파일 중입니다. 배포 할 때 몇 가지 FileNotFound 예외가 표시되고 .WAR 파일의 압축을 푼 후에도 *.properties 파일이 최종 배포본에 존재하지 않는 것으로 나타났습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 미리 감사드립니다. war 작업을 호출 할 때개미가 * .properties 파일을 컴파일하지 않습니다.

의 build.xml은

<?xml version="1.0" ?> 
<project name="APP" default="war"> 

<path id="compile.classpath"> 
    <fileset dir="WebContent/WEB-INF/lib"> 
     <include name="*.jar" /> 
    </fileset> 
</path> 

<target name="init"> 
    <mkdir dir="build/classes" /> 
    <mkdir dir="dist" /> 
</target> 

<target name="compile" depends="init"> 
    <javac destdir="build/classes" includeantruntime="false" debug="true" srcdir="src"> 
     <classpath refid="compile.classpath" /> 
    </javac> 
</target> 

<target name="war" depends="compile"> 
    <war destfile="dist/APP.war" webxml="WebContent/WEB-INF/web.xml" duplicate="preserve"> 
     <fileset dir="WebContent" /> 
     <lib dir="WebContent/WEB-INF/lib" /> 
     <classes dir="build/classes" /> 
    </war> 
</target> 

+1

정적 파일을 추가'classes' 요소를 추가, 같은'<클래스 DIR = "SRC는"= "* 속성을."포함 />' – srkavin

+0

@srkavin : 감사합니다! 이것은 정확하게 맞습니다. –

답변

0

당신은 단순히 해당 속성의 파일을 포함하지 않았다.

<war destfile="dist/APP.war" webxml="WebContent/WEB-INF/web.xml" duplicate="preserve"> 
    <fileset dir="WebContent" /> 
    <zipfileset dir="src" 
      prefix="WEB-INF/classes"> 
      <include name="**/*.properties"/> 
    </zipfileset> 
    <lib dir="WebContent/WEB-INF/lib" /> 
    <classes dir="build/classes" /> 
</war> 

또는 의견 srkavin에 의해 제안 된 (그러나 약간의 수정과로 포함하는

파일을 하위 디렉토리에 : 당신은 명시 적으로 (그들이 올바른 경로에 배치되도록 내가 접두사를 추가 할 zipfileset을 사용)를 포함해야한다) :

<war destfile="dist/APP.war" webxml="WebContent/WEB-INF/web.xml" duplicate="preserve"> 
    <fileset dir="WebContent" /> 
    <lib dir="WebContent/WEB-INF/lib" /> 
    <classes dir="build/classes" /> 
    <classes dir="src" includes="**/*.properties"/> 
</war> 
+0

이것은 의미가있는 것처럼 보입니다. 불행하게도이 변경 사항을 적용한 후에도 .properties 파일은 여전히 ​​최종 배포판의 일부가 아닙니다. 이 구현의 기능을 차단할 수있는 다른 것이 있습니까? –

+0

나는 그것을 포함하고 있지만 그것이 있어야하는'classes /'디렉토리에는 없다는 것을 알았다. –

+0

@Sean이 (가) 업데이트되었습니다. 틀림없이 srkavin의 제안 된 솔루션이 더 좋습니다. – manouti

관련 문제