2013-04-17 5 views
2

은 내가 maven acceleo generator을 구성하려합니다. 생성기는 여러 개의 acceleo 프로젝트 (메이븐의 아티팩트)로 구성되며 상호 의존성이 있습니다.Acceleo 받는다는 생성 멀티 유물/프로젝트

나는 emtl 파일 간의 종속성에 문제로 실행하고 있습니다. 런타임에 mtl에 컴파일 오류가 있음을 알리는 오류가 표시됩니다 (존재하지 않음). 컴파일 된 emtl 파일 내에서 href가 될 수 있습니다.

이러한 것으로위한 acceleo 받는다는 허용 플러그인 컴파일가 중 :

a) 절대 경로()을 받는다는 저장소 통해

b) 'platform:/plugin/...' 경로로 끝나는.

(a) acceleo 프로젝트 (메이븐 아티팩트)가 생성을 수행하는 머신과 동일한 머신에서 빌드되지만, 메이븐 저장소의 위치가 변경되면 문제가 발생합니다. 따라서 maven 아티팩트 배포는 무의미 해집니다.

받는다는 내에서 실행 'platform:/plugin/'가 해결 될 수 없기 때문에 (b)는 작동하지 않습니다.

나는 다음 URLClassLoader 우리는 'platform:/plugin/'하는 HREF를 디코딩하고 올바른 emtl 파일을 찾을 수 있습니다 사용하여 AbstractAcceleoGenerator, 에 'createURIConverter' 메소드를 오버라이드 (override)하는 것을 시도했다. 나는 그러나 나는 아직도보고

"org.eclipse.acceleo.engine.AcceleoEvaluationException: Unresolved compilation error in generation module" 

어떤 제안을 얻을이 작동하는 것 같군 있음을 확인할 수 있습니까?

답변

1

예외가 null로 해결 EMTL하는 HREF 모델에 의해 발생되었다.

hrefs를 해결할 때의 문제는 리소스 팩토리가 등록되지 않았다는 것입니다 (예외적으로 EcoreUtil.resolve에서 잃어 버리게 됨). "// 실패는 무시됩니다."- 가장 도움이되지 않습니다.).

그래서 "createURIConverter '메서드를 재정의하고'URLClassLoader를 사용하여 'platform :/plugin/..'을 디코딩하도록하는 방법이 효과가있는 것처럼 보입니다. AcceleoParserMojo에서 수행 같은 방법을 사용하여 URLClassLoader를 구축

.