2009-06-08 2 views
2

저는 명령 행을 사용하여 리눅스에서 개미와 함께 일하고 있습니다. 나는 javac으로 간단한 빌드 단계를 가졌다. 이것은 올바르게 컴파일되지만 내 네임 스페이스와 같은 빌드 아래에 디렉토리 구조를 만듭니다. 개미 네임 스페이스/디렉토리 구조 작업

예 : (그것에 자바를 호출하는 것이 더 쉽습니다 곳) 나는 하나의 디렉토리에이 출력을 얻을 수있는 방법 ./build/com/crosse/samplespace/SampleProgram.class

.

나는
<target name="output" depends="compile"> 
      <copy todir="${output}"> 
        <fileset dir="${build}" includes="**/*.class"/> 
      </copy> 
</target> 

을 시도했지만 그건 내 출력 디렉토리에 같은 일을 반복합니다. 개미를 사용하여 모든 것을 단일 디렉토리로 가져 오는 방법은 무엇입니까?

다른 방법으로 개미 단계를 사용하여 다른 파일을 경로의 루트 (아파치 공유 구성 파일)에 복사 할 수 있습니까?

편집 : 이것은 주로 편리한 요소이며 내 프로그램을 실행하기 위해 동일한 3 개의 디렉토리를 탐색하는 것에 지쳐 버립니다.

답변

2

모든 파일 (클래스 및 기타 리소스)을 포함하는 jar 파일을 만드는 방법은 무엇입니까? jar도 사용자가 두 번 클릭하거나 java -jar <jar-file>을 사용하여 호출 할 때 main 메소드가 실행되는 '기본'클래스를 가지고 있습니다. Ant jar task을 사용할 수 있습니다.

그 외에도 디렉토리 구조 (jar 외부)를 유지하는 것이 중요합니다. 그렇지 않으면 Java 클래스 로더가 이러한 클래스를로드해야 할 때 행복하지 않습니다. 또는 귀하의 질문에 잘못 되었습니까?

0

flattenmapper를 사용하여 수행하려는 작업을 수행 할 수 있지만 그럴만한 이유가 무엇인지 알기가 어렵습니다.

1

carej가 지적한대로 질문에 대답하려면 flatten mapper을 사용하십시오.

<copy todir="${output}" flatten="yes"> 
    <fileset dir="${build}" includes="**/*.class"/> 
</copy> 

그러나

, 나는 또한이 함께 달성하기를 바란다 이해 안 함 : copy 작업은 심지어 바로 가기가 있습니다. 자바 런타임은 클래스 파일이 패키지 구조를 반영하는 디렉토리 구조에 있어야한다고 예상합니다. 최상위 디렉토리에 클래스 파일을 복사하는 것은 클래스가 기본 패키지에 있지 않으면 작동하지 않습니다 ( .java 파일에 package 문이 없음).

수동으로 디렉토리를 변경하지 않으려면 적절한 클래스 경로 및 기타 매개 변수를 사용하여 java 작업을 호출하는 대상을 언제나 개미 빌드 파일에 추가 할 수 있습니다. 예 :

<target name="run" depends="compile"> 
    <java classname="com.crosse.samplespace.SampleProgram" 
      classpath=".:build"/> 
</target>