1

나는 3 개의 모듈을 포함하는 프로젝트를 가지고 있습니다.다른 모듈의 형질 확장

  • 주요
  • 도메인 도메인 모듈에서
  • 인프라

나는 엔티티 클래스와 저장소 특성을 가지고있다. 인프라 모듈에서

Entity.scala EntityRepository

나는 확장하고 EntityRepository 특성을 구현하고자합니다.

그러나 인프라 모듈에서 도메인 mobdule의 특성에 액세스하는 방법을 모르겠습니다.

나는 build.sbt에 의해 내가 뭘하는지 알 수 있을지 모르겠다. 내가 뭔가 잘못했는지 말해봐.

import play.Project._ 

lazy val domain = Project("domain", file("domain")) 

lazy val infra = Project("infrastructure", file("infrastructure")).dependsOn(domain) 

lazy val root = Project("MainModuleName", file(".")).dependsOn(domain, infra) 

name := "AppName" 

version := "1.0" 

playScalaSettings 

지금 갑자기 나는 EntityRepositoryImpl에서 EntityRepository을 찾을 수 있습니다하지만 난 그것을 확장하도록 선택할 때 여전히 빨간색과 '확인할 수 없습니다 ...'- 오류를 표시합니다. 피드백 모든 종류의

Finds the trait

Still red if I choose it

해피!

+0

IntelliJ의 컴파일러에서 오류가 발생하거나 "sbt compile"을 실행할 때 ? –

+0

@RadoBuransky 컴파일러에서 오류가 없습니다. EntityRepository를 찾을 수 없기 때문에 "확장 EntityRepository"를 추가하면 실패합니다. 내 말은 EntityRepositoryImpl 클래스에서 그 특성을 가져올 수 없다는 것입니다. – raxelsson

+0

그게 내가 물어 보는거야.오류 메시지가 IntelliJ 또는 SBT에서 제공되는지 여부. IntelliJ 프로젝트가 최신 상태가 아닐 수도 있습니다. "sbt gen-idea"(해당 플러그인을 사용하는 경우)를 실행하여 build.sbt에서 IntelliJ 프로젝트를 다시 생성하십시오. –

답변

1

귀하의 프로젝트 설정 덕분에 당신이 infradomain에 의존하기 때문에 infra 하위 프로젝트에 어디에서 domain 하위 프로젝트에 EntityRepository 특성에 액세스 할 수 있습니다. EntityRepository을 전체 이름으로 참조하거나 패키지가있는 패키지 (import com.example.EntityRepository)를 가져 오기만하면됩니다.

IntelliJ를 사용하는 경우 sbt-idea 플러그인을 사용하여 sbt에서 프로젝트를 생성 할 수 있습니다. Eclipse가 sbteclipse-plugin 인 경우에도 마찬가지입니다. 이렇게 생성 된 IDE 프로젝트는 서로에 대한 적절한 참조를 가지며 클래스를 찾는 데 도움이됩니다.

두 개의 서로 다른 SBT 하위 프로젝트에서 동일한 패키지를 사용하더라도 문제는 없습니다. 이로 인해 컴파일 문제가 발생하지 않아야합니다.

IDE로 인해 발생할 수있는 문제를 제거하려면 SBT로 컴파일하는 것이 좋습니다. SBT를 종료하고 다시 시작한 다음 SBT 콘솔에서 ;clean; compile; test을 실행하십시오. 모든 것이 잘 컴파일되면 (또는 그렇지 않더라도) SBT 콘솔에서 gen-idea으로 IntelliJ 프로젝트를 재생성합니다. 귀하의 경우 모든 SBT 명령에 대해서는 root 프로젝트에 있어야합니다. SBT를 시작할 때 기본 위치라고 가정합니다.

+0

답장을 보내 주셔서 감사합니다. @Aleksey. "sbt-idea 플러그인을 사용하여 sbt를 사용하여 프로젝트를 생성 할 수 있습니까?" 프로젝트는 게임 아이디어로 이상화되었지만 Infra-Module에서 EntityRepository를 사용할 수 없다는 점이 이상적입니다. 모두 빨갛고 수입 제안을하지 않습니다. 모듈을 가져 오려고하면 아무 것도 없습니다. 하지만 내가 한 일은 그때 일해야합니까? – raxelsson

+0

일부 이미지로 내 게시물을 편집했습니다. – raxelsson

+0

최상의 테스트는 IntelliJ로 컴파일하지 않아도 어쨌든 코드 조각을 작성한 다음 sbt 쉘에서 실행합니다. 컴파일하고 컴파일하는지 확인하십시오. SBT 관련 변경 사항을 수행하는 경우 SBT를 다시로드하는 것을 잊지 마십시오. '; gen-idea'와 함께'sbt-idea' 플러그인을 사용하면 sbt에서 IntelliJ 프로젝트를 재생성해야 할 수도 있습니다. sbt가 모든 프로젝트를 컴파일 할 수 있는지 알려주십시오. –