2013-01-23 4 views
1

저는 다른 Java 프로젝트의 소스 파일에 크게 의존하는 Scala에서 새 프로젝트를 시작할 것입니다. 처음에 나는 그 프로젝트에서 새로운 패키지/모듈을 만드는 것에 대해 생각했지만, 그것은 지저분 해 보였다. 그러나, 나는 새 프로젝트에서 자바 코드를 복제하고 싶지 않다. 가장 좋은 해결책은 svn 외부 의존성을 통해 Java 프로젝트를 참조하는 것입니다. 또 다른 해결책은 원래의 jar 파일을 만드는 것입니다. 새로운 Scala 프로젝트에 라이브러리로 첨부 할 것입니다. 그러나 이로 인해 최신 정보가 더 불편 해집니다. 어떤 경로가 더 좋습니까? 외부권장 코드 재사용

SVN :

  • 쉬운 라이브러리로
  • 불편한 설치

JAR 파일을 커밋

  • 쉬운 업데이트 :

    • 간편한 설치로
    • 오래된 코드 (안정, 버그 수정 만)
    • 멀티 단계는
    • 오래된 프로젝트를 열 필요가 업데이트 당신은 당신의 스칼라 프로젝트를 가지고 있고,이에 따라 변경에게
  • +1

    필자는 프로젝트를 별도로 유지하고 maven으로 빌드하도록 업그레이드 한 다음 maven을 사용하여 저장소와 관련된 프로젝트 간의 종속성을 관리 할 수 ​​있습니다. – codeghost

    +0

    _source_ 자체에 의존한다는 것은 무엇을 의미합니까? Scala 컴파일러는'.class' 파일을 읽어 Java 클래스 정의를 파생시킬 수 있습니다. 어쨌든 소스 중복은 매우 나쁜 생각입니다. IDEA (아마도 이클립스)를 사용하는 경우, 소스 라이브러리를 사용하는 프로젝트에 그대로 소스 코드를 통합하지 않고도 외부 라이브러리의 소스에 연결할 수 있습니다. –

    +0

    @RandallSchulz : Intellij를 사용하고 그에 대해서도 생각했습니다.하지만 동료 중 일부는 Eclipse/Netbeans를 사용하므로 IDE 관련 솔루션을 사용하지 않기를 바랍니다. –

    답변

    2

    를 만들기 위해 적극적인 개발에없는 Java 프로젝트의 일부. 제게 자바 프로젝트는 스칼라 프로젝트가 참조하는 버전 번호가있는 라이브러리 여야합니다. 또는 두 프로젝트에서 공유되는 부분을 라이브러리로 분리해야합니다. Maven과 같은 빌드 도구를 사용하면 어떤 버전이 사용되고 있는지 명확히 알 수 있습니다. Java 프로젝트는 별도로 전개 될 수 있습니다. 또는 Scala 프로젝트를 위해 변경해야하는 경우, 새 버전을 가져올 수 있으며 손상이 염려되는 경우 다른 버전에서 이전 버전을 계속 사용할 수 있습니다.

    내가 생각할 수있는 바이너리 종속성을 뛰어 넘는 유일한 예외는 Java 코드 자체가 실제로 스칼라 프로젝트에만 해당되는 컴파일 타임에 어떤 방식으로 처리되고 있는지 여부입니다. 주석 처리와 마찬가지로 말입니다.

    SVN 외관을 사용하는 것이 해결책 일 수 있습니다. 트렁크의 Java 코드를 일부 업데이트하여 갑자기 스칼라 프로젝트가 작동하지 않도록 분기 및 스냅 샷을 사용하여 작업해야합니다.

    2

    스칼라/자바가 섞여 있는지 여부는 관계 없습니다. 두 프로젝트가 매우 다르며 릴리스주기가 다른 경우 외부 종속성 (병)을 사용하려고합니다. 그렇지 않으면 sbt를 사용하고 두 프로젝트를 동일한 빌드의 하위 프로젝트로 만들 수 있습니다 (sbt 빌드 파일은 자바 프로젝트에 종속 된 스칼라 프로젝트를 갖습니다). 아니면, 정말 서로 얽혀 있다면 자바와 스칼라 소스 파일이 모두있는 프로젝트 하나를 가지고 있습니다. Sbt는 잘 처리합니다.

    Maven도 옵션입니다.

    0

    maven을 사용하여 혼합 된 scala/Java 프로젝트를 매우 쉽게 설정할 수 있습니다. scala-maven-plugin을 살펴보십시오.

    https://github.com/davidB/scala-maven-plugin

    이클립스 사용자는 가난한 받는다는 통합으로 인해 너무 기뻐하지 않을 수 있습니다.