2013-06-19 2 views
1

AbstractCellTable class (일부 필드 및 메소드의 가시성을 보호 또는 공개로 변경)에서 일부 변경을 수행하려고합니다. 나는 AbstractCellTable.java 파일을 복제했고, 그것을 변경하고 내 이클립스 프로젝트 'commons'(동일한 패키지 이름 com.google.gwt...)에 넣었다.Maven 프로젝트에서 GWT 클래스를 재정의/대체하는 방법은 무엇입니까?

일부 다른 GWT 프로젝트는 commons 프로젝트를 사용합니다. 이들은 동일한 Eclipse 작업 공간에 있으며 commons의 소스 종속성을 사용합니다. 컴파일 할 수 있으며 표준 GWT Eclipse 플러그인을 사용하여 AbstractCellTable class을 바꿀 수 있습니다.

내 프로젝트를 Maven 프로젝트로 변경하려고 할 때 문제가 나타납니다. commons 프로젝트를 설치하는 데 문제가 없습니다 (mvn 새로 설치). 생성 된 jar 파일에 변경된 소스 파일 AbstractCellTable.java이 나타납니다. 그러나 종속 프로젝트를 컴파일 할 때 컴파일 오류가 발생합니다. stacktrace가 없지만이 문제의 원인은 AbstractCellTable class의 GWT 컴파일러 원본 버전을 사용하는 것입니다. 이전에 제대로 설치 되었더라도 commons.jar에 컴파일 오류가 있습니다 (오류!).

나는 이미 pom.xml에서 종속성의 순서를 변경하려고 시도했지만 작동하지 않습니다. 내 repo에 gwt-user.jar 자신의 버전을 설치하는 것에 대해 생각하고 있지만 GWT 프로젝트가 Maven에 의존하지 않기 때문에 쉽지 않을 것입니다.

원래 GWT 클래스를 대체하는 더 좋은 해결책이 있습니까?

답변

1

GWT 파일을 편집하려면 동일한 이름의 파일을 만들어 gwt에서와 같이 응용 프로그램의 동일한 패키지 구조에 배치해야합니다.

: AbstractCellTableGWT는 사용자 항아리 com.google.gwt.user.cellview.client 패키지이다. 따라서 패키지에 동일한 패키지 구조가 있어야합니다.

또 다른 방법은 자신의 받는다는 모듈 맞춤 GWT 사용자 말과 의존성 등 GWT 사용자을 만드는 것입니다. 그리고 다시 패키지 구조을 따르십시오. 당신의 엔트리 포인트 패키지에 대한 종속성을 추가하는 동안, plugins-> 아니라 플러그인> 종속성 -> 의존성에서 당신이 언급 한 GWT 사용자 종속성을하고 맞춤 GWT 사용자 두 종속성 및 GWT 사용자에서 추가 dependencies-> dependency 그리고 사용자 정의 gwt 사용자가 순서대로 첫 번째인지 확인하십시오.

1

지연 바인딩 메서드를 사용하여 기존 클래스를 자신의 새 클래스로 바꿀 수 있습니다. module.gwt.xml 파일에서 다음과 같은 행을 추가하십시오.

<replace-with class="com.stuff.something.MyClss"> 
    <when-type-is class="com.google.gwt.user.client.pathtoclass.AbstractCellTable"/> 
</replace-with> 
+0

이것은 GWT.create()로 작성된 클래스에서만 작동합니다. – robert

관련 문제