2009-06-20 3 views
12

내 Groovy 코드 중 일부가 내 Java 파일을 참조하는 상황이 있지만 동일한 Groovy 코드를 참조하는 다른 Java 파일도 있습니다. Maven에서 컴파일을 시도 할 때 자바 이전 또는 이후에 그루비를 컴파일해야하며 그루비 코드가 일부 자바 파일에 의존하고 다른 자바 파일이 그루비 코드에 의존하기 때문에 실제로 작동하지 않습니다. 이러한 종류의 종속성을 처리 할 수있는 방법이 있습니까?maven compile groovy

답변

8

gmaven 플러그인을 maven pom.xml에 추가하여 코드를 컴파일 할 수 있어야합니다. 당신이 다루는 언어 간 참조 유형을 다루기 위해 Groovy 코드의 Java 스텁을 생성합니다. 나는 이것을 아주 많이 사용하며 아주 잘 작동한다.

0

코드를 레이어로 분할하고 하위 레이어에서 상위 레이어를 호출 할 수 있지만 그 반대로 할 수는 없습니다. 예를 들어, 웹 응용 프로그램에서보기 레이어, 서비스 레이어 및 지속 레이어를 가질 수 있습니다. 뷰 레이어는 서비스 레이어를 호출하고 서비스 레이어는 퍼시스턴스 레이어를 호출하지만 퍼시스턴스 레이어는 결코 서비스 레이어 또는 뷰 레이어를 호출하지 않습니다. Groovy/Java 코드가 같은 레이어에 존재하도록하려면 다른 레이어를 호출해야하지만 둘 다 서로 호출하지는 마십시오. 결론은 양방향 종속성을 피해야한다는 것입니다.

+0

-1 공동 Groovy-Java 컴파일러가 있습니다. –

+0

사실이지만 양방향 종속성이 있으면 불필요하게 복잡하고 관리하기 어려운 코드가 될 수 있습니다. 이 질문의 맥락에서 나는 GMaven을 사용하는 것이 옳은 답변이지만, 여전히 양방향 관계를 제거하거나 최소한 줄이는 코드를 리펙토링 할 것이라고 동의한다. – rich

11

예, 바로 GMaven을 사용하십시오. 공동 컴파일러이기 때문에 자동으로 자바를 관리하여 자바 의존성을 멋지게 표현합니다.

  • pom.xml에서 gmaven-plugin 포함;에

    간단히 말해서, 당신이 필요합니다

  • groovy 수업을 src/main/groovy 또는 src/test/groovy 아래로 유지하십시오.
  • gmaven 플러그인을 관련 생명주기 단계에 바인드하십시오.

자세한 내용은 building groovy projects을 참조하십시오.