2009-11-09 8 views
3

빌드를 위해 개미를 사용하고 종속성을 위해 아이비를 사용하는 프로젝트가 있습니다. 종속성의 순서가 중요 할 수 있고 ivy 구성의 순서에서 보존해야하므로 특히 Ivy에서 구성된 종속성을 기반으로 클래스 경로를 사용하여 프로젝트의 시작 스크립트를 생성하고 싶습니다.Ivy, ant 및 시작 스크립트

이전에이 작업을 수행 한 사람이 있습니까? 클래스 경로에서 상대 경로를 생성해야하므로 절대 경로를 사용할 수 없으므로 빌드가 완료된 시스템에서만 작동합니다.

EDIT : 방정식에서 Ivy를 잘라 내면 (내가 선택한 디렉토리에 대한 해결책을 찾음) 피드백을 바탕으로 아마도 libs 목록을 확인할 수 있습니다. 그러나 시작 스크립트, 특히 상대 경로 (bin 디렉토리 기준)에 적합한 classpath를 생성하는 방법은 무엇입니까?

install 
    /bin <-- scripts here 
    /lib <-- jars here 

그래서 내 bin/start.sh에서 나는 모든 항아리 기준이 아닌 전체 절대 경로 앞에 ../lib/이 필요합니다.

감사합니다.

답변

0

Ivy는 중복 된 종속성을 제거하고 모든 프로젝트에 가장 적합한 공통 종속성을 찾으므로 종속성 순서가 전혀 중요하지 않은 방법을 실제로 이해하지 못합니다.

그러나 프로젝트의 경우 표준 JAR/WAR/other를 Ant로 만들고 해당 JAR에 Ivy 종속성을 포함시켜야합니다. 기본적으로해야 할 일은 Ivy의 Ant 작업을 사용하여 폴더에 대한 종속성을 해결 한 다음 해당 종속성을 사용하여 클래스를 빌드 한 다음 라이브러리 JAR을 포함하도록 JAR을 생성하는 것입니다. ■ 새로 생성 된 JAR의/lib/폴더 .

+0

감사합니다. 모두 사실이지만, 주로 시작 스크립트의 생성은 지금 당장 붙어 있습니다. –

0

처럼 에스코 당신이 필요한 모든 JAR 아카이브를 포함한 JAR 생성해야했다 : 그 후

<zip destfile="abc.jar"> 
    <zipgroupfileset dir="lib/distributed" includes="*.jar"/> 
    <manifest> 
     <attribute name="Main-Class" value="com.acme.MyClass"/> 
    </manifest> 
</zip> 

를, 당신의 시작 스크립트는 간단하다 : 당신은 자바 1.6을 사용하는 경우

java -jar abc.jar 
0

당신 (즉, java -cp "../lib/*") 파일 글로브를 사용할 수 있습니다. 이전 버전의 자바를 사용하고 있고 블라디미르의 솔루션을 사용하고 싶지 않다면 클래스 패스가 무엇인지 알아내는 스크립트를 작성해야합니다. "../lib/abc.jar:../lib/처럼 뭔가에 동일한 클래스 경로를 설정하는 몇 가지 리눅스 마법을해야합니다

cd dirname %0 # change to the bin directory, use %0/.. instead and you can replace ../lib with just /lib 
sh set_classpath.sh # set the classpath 
java -cp $CLASSPATH some.package.Main 

및 set_classpath.sh :

그래서 launch.sh이 같이 보입니다 def.jar "(make_cp")

#!/usr/bin/perl 

my $CLASSPATH=""; 
my $DIR=shift; 
$DIR||="lib"; 

opendir(LIBDIR, $DIR); 
while ($file = readdir(LIBDIR)) { 
    $CLASSPATH.=":$DIR/$file" if ($file =~ /\.jar$|\.zip$/); 
} 
closedir(LIBDIR); 
$CLASSPATH=~ s/^://g; 
print "$CLASSPATH"; 

사용 몇 년 이후 (2000?)

export CLASSPATH=`ls *.jar | sed 's/[^.jar].jar/..\/lib\/\0:/'` 
1

을, 우리는이 작은 경로에있는 스크립트를했다 " 이렇게 :

export CLASSPATH=`make_cp lib`:`make_cp external-lib`