2009-06-20 7 views
0

프로젝트에 많은 수의 클래스가 있으며, 스크립트에서이 클래스를 모두 컴파일하고 싶습니다. 클래스는 특정 순서로 컴파일되어야합니다. 예를 들어, A이라는 클래스가 있는데이 클래스는 B이라는 클래스에 따라 다릅니다. B 클래스가 C 클래스에 종속되어 있다고 가정 해 보겠습니다. 내가 클래스 A를 컴파일하려면 먼저 B와 C를 컴파일해야한다.Java 파일에 대한 컴파일 그래프를 작성하려면 어떻게해야합니까?

각 클래스를 구문 분석 할 필요가 없도록 클래스의 컴파일 순서를 설정하는 데 사용할 수있는 도구가 있는가? 그리고 나 자신을 결정 해? 이 도구는 컴파일 할 파일의 순서로 파일을 저장할 수 있으므로 스크립트에서 파싱 할 수 있습니다.

감사합니다.

+0

직접해야 할 필요가 있습니까? javac가 이미 이것을하고 있기 때문입니다. – Cogsy

답변

6

동시에 (모두 javac 호출에서) 모두 컴파일하면 설명하는 정렬 작업을 수행 할 필요가 없습니다. javac은 동시에 제공되는 모든 파일을 컴파일 할만큼 똑똑하기 때문에 순서가 잘못된 컴파일에는 아무런 문제가 없습니다.

+0

나는 지금 이것을 사용할 것이고, 자유 시간이있을 때, 나는 이것을 직접 구현하려고 노력할 것이다 :) – Geo

2

Java 컴파일러 (Javac)는 이미 컴파일해야하는 모든 클래스 파일의 종속성 목록을 작성합니다. (이 자동으로 컴파일러에 의해 처리되는) ​​개인이 아닌 자바 파일 같은 패키지에서 - 진짜 의존성은 여기 패키지 사이에있다.

지정하고 다양한 패키지의 모든 파일을 컴파일하고 최종 분포를 생산하는 개미 또는 메이븐 같은 도구를 사용합니다.

NetBeans와 같은 IDE를 사용하는 경우 자동으로이 작업을 수행합니다. 또는 JDepend

+0

나는 직접 컴파일을 수행하고 싶다. – Geo

+0

알겠습니다. - 모든 코드를 직접 작성하고 의미있는 패키지로 구성한 경우 각 패키지 간의 종속성을 알 수 있습니다. 학업용으로 시도하는 경우 가장 쉬운 방법은 방법을 배우는 방법은 Ant가 build.xml 파일을 사용하여 종속성이 무엇인지 알아 보는 것입니다. '많은 양의 Java 파일을 말할 때 여기에서 몇 개가 언급되고 있습니까? 얼마나 많은 패키지가 있습니까? – Dinuk

+0

연습이지만 클래스는 자동으로 다른 스크립트에서 생성되므로 생성 할 클래스 수를 구성 할 수 있습니다. 클래스에 대한 코드를 생성 할 때 "그래프"를 만들 수 있다는 것을 알고 있지만 나에게 생성되지 않은 클래스에서 작업 할 수 있기를 바랍니다 :) – Geo

1

과 같은 도구를 사용하는 경우 이러한 종류의 DAG 정렬 문제는 일반적으로 토폴로지 정렬로 해결됩니다. 설명은 Wikipedia을 참조하십시오. 찾고있는 도구가 있는지 모르겠지만 직접 구현하는 것은 어렵지 않아야합니다.

관련 문제