2017-09-25 13 views
1

Log4j를 사용하는 사용자 정의 항아리를 번들로 사용해야하는 일부 오래된 항목과 일부를 업그레이드하려고합니다. 나는 성공적으로 컴파일하는 나의 <javac> 작업을 위해 다음을 추가했다.Java Ant Job 내 항아리와 함께 Log4j jar를 배송하는 방법

<path id="my.classpath"> 
    <fileset dir="${mainpath}"> 
     <include name="**/*log4j*.jar"/> 
    </fileset> 
</path> 

    <javac srcdir="src/java" destdir="build/filez/java" debug="on" deprecation="no" 
      includes="my/instruments/**/*, org/apache/log4j/**/*"> 
     <classpath refid="my.classpath"/> 
    </javac> 

하지만, 내 <jar> 작업에서 나는 내 사용자 지정 항아리 가득 어떤 log4j 종속성을 볼 수 없습니다. 이것은 바보 같은 질문 일지 모르지만 종속성이 압축되지 않았기 때문에 다른 응용 프로그램에서 호출 할 때 내 사용자 정의 jar 파일이 실패하지 않도록하는 방법은 무엇입니까? log4j가 대상 응용 프로그램의 클래스 로더에 의해로드되는 한 괜찮습니까?

또한 내 매니페스트에이 내용을 추가해야합니까?

나는 잠시 동안 (예 내가 아는) 메이븐을 사용할 수 없습니다, 그래서 당신은 그것을 하나의 큰 실행 JAR에 종속이다와 함께 코드를 패키지로 One-JAR을 사용할 수 있습니다 받는다는

+0

파일을 jar 파일에 포함 시키려면 javac이 아니라'jar' 작업으로 제어합니다. jar에 log4j를 포함시킬 필요가 있는지 여부는 그것이 런타임인지 또는 컴파일 시간 의존인지에 따라 다릅니다. – CAustin

답변

1

으로이 문제를 해결할 수 없습니다.

명령 줄에서 독립 실행 형 도구로 사용하거나 build.xml에 정의 된 작업으로 사용할 수 있습니다.

<!-- Construct the One-JAR file --> 
<one-jar destfile="hello.jar" manifest="hello.mf"> 
    <main> 
     <!-- Construct main.jar from classes and source code --> 
     <fileset dir="${classes.dir}/src"/> 
    </main> 
    <lib> 
     <fileset file="${build.dir}/lib.jar" /> 
    </lib> 
</one-jar> 
+0

교육, 교육, 교육 - 나는 단지이 단어들을 기억할 수있다 !! 제발 제발! 매니페스트에 아무 것도 추가해야합니까? – ha9u63ar

+0

내가 생각하는 메인 클래스와 다른 점은 아무것도 없다. – Raniz

+0

Ant는 Ant의 일부가 아니다. 이것은 사용자 정의이다. – ha9u63ar