저는 전적으로 Java로 구성된 Maven 프로젝트를 작업 해 왔으며 최근에는 스칼라 코드를이 프로젝트에 혼합하기 시작했습니다.Maven 프로젝트를 위해 Scala와 Java 소스 파일을 분리하는 것이 좋습니까?
스칼라가 제공하는 뛰어난 표현력, scala-maven-plugin의 쉬운 사용법, 특히 자바와 스칼라 간의 믿을 수없는 상호 운용성에 놀라움을 금치 못합니다.
그러나 한 가지 불편을 겪었습니다. Maven의 협약에 따르면 Java의 소스 코드는 src/main/java
으로, 반면 Scala는 src/main/scala
입니다. 나는 자주 Java와 Scala 소스 파일을 앞뒤로 가야하기 때문에 패키지 디렉토리의 깊은 계층을 트래버스해야 할 때마다 (종종 필자의 편집기를 복잡하게 만드는 탭을 닫는다.
그래서 질문은입니다. src/main/java
과 src/main/scala
이라는 별도의 디렉토리를 유지 관리 할 것을 권장합니까? 그렇다면 왜?
배경을 더 추가하기 위해 웹 애플리케이션 프레임 워크 Wicket에서 HTML 파일을 해당 Java 파일과 나란히 배치하는 방법을 연구했습니다. 디렉토리를 분리하여 보관하면 HTML 파일도 자연스럽게 분리됩니다 (저는 스칼라 파일과 해당 HTML 파일을 다른 디렉토리에 두는 것이 합리적이라고 생각하지 않습니다). 그리고 나서 "Foo.html을 찾을 수없는 이유는 무엇입니까?"오, 잘못된 디렉토리를 찾고있었습니다. "
소스 파일 자체는 확장 프로그램을 검사하여 사람과 기계가 구분하기가 쉽습니다. Java와 Scala를 모두 처리 할 수 있도록 pom.xml을 구성하여 src/main/java
에 넣었습니다 (이 컴파일되어으로 실행 됨). 반면에 디렉토리를 분리하면 자바와 스칼라에서 부주의 한 실수로 상충되는 클래스를 정의 할 위험이 있습니다.
글쎄, 나는 자바뿐만 아니라 스칼라도 포함하고 있다면 java
디렉토리의 이름을 지정하고 싶지 않다. 그러나 이것은 디렉토리를 구분할 수있는 유일한 포인트입니다.
(편집 : 해결 방법을 생각해 냈습니다. java
은 Java 가상 머신을 의미합니다. 이런 식으로 src/main/c
을 갖는 것은 C가 JNI를 사용하기로 결정했다면 모순되지 않습니다. JVM에서 실행하십시오.)
아, 그리고 또 하나의 포인트; 내 프로젝트는 오픈 소스 프로젝트로 의도 된 것이 아닙니다. 협약을 따르기 위해 열심히 노력하는 것보다 개발 편의성이 더 좋습니다.
이 질문은 영감을 받아 this answer입니다.
IDE를 사용하고 파일 배치 방법이 중요하지 않습니다. Ctrl + 클릭하여 모든 수업을 열 수 있습니다. 아마도 편집기 사용에서 Java/Scala 용 도구 디자인 사용으로 전환해야 할 때입니다. 또한 IDE는 훨씬 더 많은 작업을 수행합니다. IDE를 사용하기 전에 얼마나 많은 시간을 낭비했는지 믿지 않을 것입니다. –
IDE를 알고 있습니다. Eclipse를 5 년 이상 사용해 왔고 터미널 기반 환경 (vim)으로 전환했습니다. 나는 기술적으로 Eclipse를 사용하고 있지만 Java/Scala 혼합 프로젝트와 함께 작동하도록 구성하지는 못했기 때문에 eclim을 사용하고 있습니다. 마우스 기반 환경으로 돌아가고 싶지 않습니다. 필자는 파일러/점퍼/import-organizer 등을 사용하기 위해 "다른 OS"를 구성하는 것에 싫증이났다. 나는 코딩 작업을하는 동안 후드 아래에서 진행되는 작업을 연구하기 위해 _Tools_을 내 손으로 사용하는 것을 좋아합니다. – Ohashi
IntelliJ를 여러 컴퓨터에서 사용하고 아무것도 재구성하지 않아도됩니다. (아마도 기본값으로 살아서 기쁩니다.) 모든 기능에 단축키를 사용할 수 있으며 마우스를 사용한다고 느끼지 않습니다. 많은. –