2011-09-06 5 views
1

내 프로젝트에는 다른 프로젝트에서 참조한 많은 의존성이 있습니다. build.xml 파일을 작성 중이며 현재 JAR 작업을 작성 중입니다. 내 JAR이 Eclipse 외부에서 올바르게 작동 할 것으로 기대한다면 JAR 파일에 참조 된 각 JAR 종속성의 복사본을 포함시켜야한다는 대담한 가정으로 시작할 것입니다.개미와 JARring

이제 filesetjar 작업 아래에 추가해야합니다.이 작업은 Ant에 JAR에 이러한 종속성을 포함하도록 지시합니다. 문제는 네비게이터보기로 전환하고 프로젝트에서 내 의존성을 찾으려고 할 때 찾을 수 없다는 것입니다. 그것들에 대한 유일한 언급은 자신의 절대적 URL을 참조하는 파일 .classpath에 있습니다.이 파일은 Eclipse가 어떻게 찾았는지 추측합니다.

제 질문은이 .classpath 파일의 종속성을 찾아 내 JAR 파일에 포함 시키려면 어떻게 지시해야합니까?

두려움은 먼저 각 JAR을 내 프로젝트 루트 아래의 디렉토리에 수동으로 복사 한 다음 내 빌드에서 해당 디렉토리를 참조해야한다는 것입니다. 하지만 은 JAR 중 많은 수의이며, 이는 많은 수의 tiem이 copy-n-pastin '으로 손실되었음을 의미합니다.

아이비 또는 메이븐에 대한 어떤 제안을하시기 바랍니다

, 나는이 내 상황에 가장 적합한 솔루션이라는 것을 잘 알고 있어요하지만이 질문의 범위를 벗어난 이유로, 그들은 단지 가능하지 않다.

도움 주셔서 감사합니다.

+0

먼저 내가 당신의 모든 빌드와 이클립스 프로젝트 사이의 모든 종속성을 깰거야. 앱의 런타임 클래스 경로에 대한 타사 jar 세트를 유지해야하는 것처럼 들립니다. jar 파일에 자신 만의 소스 코드 클래스를 포함시킨 다음 응용 프로그램의 런타임 클래스 경로를 빌드하는 두 번째 ant 대상을 정의했습니다. – emeraldjava

+0

제안 해 주셔서 감사합니다. – IAmYourFaja

답변

0

프로젝트에서 실행 가능한 jar 파일을 생성 하시겠습니까? 아니면 추출되어 실행되는 배포 가능 패키지의 일부입니까? 필요한 실행 가능한 jar가 아닌 경우 종속 jar없이 프로젝트의 클래스와 리소스 만 포함 된 jar를 만들어야합니다. 그런 다음 배포 가능한 패키지로 프로젝트를 릴리스하려면 종속성을 포함하는 zip 및 tar.gz를 작성하십시오.

Ant와 Eclipse .classpath 파일간에 자동으로 파일 세트를 동기화하는 방법이 없습니다. 자신의 도구를 쓰는 것 말고는 전에 본적이 있습니다. 항아리의 수동 복사가 가장 빠른 해결책으로 판명 될 수 있습니다.

0

Eclipse에서 Ant 빌드 파일로 프로젝트를 내보낼 수 있습니다 (프로젝트를 마우스 오른쪽 단추로 클릭하고 내보내기, Ant 빌드 파일 선택). 내 보낸 build.xml 파일에는 <your project name>.classpath이라는 path 요소가 포함됩니다. 그 path 요소는 응용 프로그램을 빌드하는 데 필요한 모든 jar의 경로를 포함합니다. fileset을 사용하려는 경우 생성 된 build.xml을 수정하여 path을 다시 사용할 수 있습니다.

Ant의 Eclipse 클래스 패스를 사용하는 유일한 방법은 Ant를 작성하여 .classpath 파일을 구문 분석하는 것이다.

보조 메모로는 항아리 안에 항아리를 넣으려고하지 않는 것이 좋습니다. 자바는 항아리 안의 항아리로부터 항아리 클래스를로드 할 수 없다. 절대적으로 필요한 경우 zipfileset을 사용할 수 있습니다. 그러나 적절한 해결책은 응용 프로그램을 배포 할 때 응용 프로그램의 jar 파일 외부에 제 3 자 jar를 묶는 것입니다. 그런 다음 파일의 경로를 참조하도록 MANIFEST.MF 파일의 클래스 경로 속성을 설정 (당신은 MANIFEST.MF를위한 이상에서 <your project name>.classpath을 다시 사용할 수 있습니다.

0

을 당신이있는 경우 & 붙여 넣기가 작은 문제가 복사 생각 많은 의존성. 가장 큰 문제점은 개발 과정에서 모듈화되고 유연하지 않다는 것입니다.이를 줄이고 실제로 필요한 의존성 만 유지하십시오. 이를 위해 Jdepend 또는 metrics을 사용하거나 둘 다 Eclipse 플러그인 (또는 Class Dependency Analyzer)을 사용할 수 있습니다.

왼쪽에있는 종속성은 모든 사람이 편하게 사용할 수있는 하나의 jar (모든 클래스 파일, 중첩 된 jar 파일이 아님) 또는 외부에서 각각 별도의 파일로 둘 수 있습니다 사용자가 이미 가지고있는 제 3 자 라이브러리에 특히 유용합니다.

요점 : 모듈성은 개발 및 배포에 적합합니다.

0

종속 JAR 경로 태그 등을 선언하고 나중에 classpath에 대한 참조로 사용할 수 있습니다. 예를 들어,

<project basedir="." default="build.all" name="My Application"> 
<path id="myclasspath"> 
     <pathelement location="${project.syslib}/log4j-1.2.8.jar"/> 
     <pathelement location="${project.syslib}/xalan.jar"/> 
     <pathelement location="${project.syslib}/common.jar" /> 
     <fileset dir="${config.common}/taglib"> 
      <include name="**/*.jar"/> 
      </fileset> 
     <fileset dir="${config.csr}/taglib"> 
      <include name="**/*.jar"/> 
      </fileset> 
</path> 
<target name="compile" depends="prepare" > 
    <javac srcdir="${project.root}/src" 
     destdir="${project.root.build}" 
     classpathref="myclasspath" 
     nowarn="yes" 
     debug="on" 
     fork="yes" 
     memoryInitialSize="80m" 
     memoryMaximumSize="256m" 
    /> 
</target> 
</project> 

또한 이클립스에서 Jars 추가 단추를 통해 jars를 추가하면 상대 경로를 사용합니다.

관련 문제