빌드 트리에서 jar 파일을 빌드하는 사용자 정의 도구를 쓰고 있습니다. 우리는 "루트"클래스 (main()이있는 곳)에서 실제로 참조 된 .class
파일 만 포함하는 "최소"jar 파일을 빌드하는 등 종속성을 재귀 적으로 따르는 방식을 선호합니다.jar 파일에 해결되지 않은 종속성이 있는지 어떻게 테스트 할 수 있습니까?
이전에 우리는 javac
을 소스 종속성을 따르도록했지만 실제로는 여러 번 공통 파일을 다시 컴파일해야합니다. (우리는 단일 소스 트리에서 60 개 또는 70 개의 별개의 응용 프로그램 jar를 빌드합니다.) 각 소스 파일을 한 번만 컴파일하는 새로운 빌드 시스템을 작성하고 있지만 이는 .class 파일을 구문 분석하여 종속성을 따라야 함을 의미합니다.
좋은 소식은 내가 원하는대로 작동하는 코드가 있다는 것입니다. 그러나 나는 이어야만합니다. 나는 그것을 망치지 않았습니다. 즉, 내부적으로 일관성있는 jar 파일을 만들고 싶습니다. "일관성있는"은 모든 미해결 참조가 알려진 제 3의 중 하나로 해결 될 수 있다는 것을 의미합니다. - 항아리.
그래서 이상적으로 나는 myapp.jar
내부의 모든 해결되지 않은 참조를 검사하고이 --classpath
에 전달 된 타사 항아리 중 하나에 의해 해결 될 수 있는지 확인합니다
MagicTool \
--classpath commons-lang.jar:commons-collections.jar:[...etc...] \
myapp.jar
처럼 실행할 수있는 MagicTool를 원한다. 그렇지 않다면, barf.