2012-02-23 2 views
5

우리 그룹은 JVM 기반 개발에 다소 익숙하다. 우리는 다른 많은 라이브러리로 구성된 애플리케이션을 개발 중입니다.Play 2.0 애플리케이션을 사용한 종속성 관리

Play 프레임 워크는 웹 응용 프로그램 개발에 매우 ​​적합합니다. 프레임 워크는 훌륭하지만 로컬 개발 라이브러리의 종속성 관리는 다소 힘든 일입니다. 우리는 Play 2.0의 RC2를 사용하고 있으며, Play에로드 된 라이브러리에서 변경 사항을 얻을 수는 있지만 일반적으로 부드러운 Play 프로세스를 방해하는 것은 어색한 프로세스입니다.

우리가하고있는 일은 우리의 라이브러리를 로컬 (각 개발자의 컴퓨터에서) Maven 저장소로 푸시 한 다음 동일한 라이브러리를 다시 Play 프로젝트로 가져 오는 것입니다. 그것은 작동하지만, 내가 말했듯이, 그것은 어색합니다.

이 작업을 좀 더 원활하게 수행 할 수있는 모범 사례가 있습니까?

FWIW, 우리는 내가 '인 IntelliJ 11.0 (궁극)

============ 편집 ============

를 사용하는 Maven 빌드 프로세스를 개선하는 방법에 대한 좋은 답변을 얻었습니다. 감사합니다. 그러나 이것은 내가 찾고있는 대답이 아닙니다.

이를 구체적으로 설명하기 위해 서비스 모니터링 및 관리를위한 서비스 및 웹 응용 프로그램을 모두 작성한다고 가정합니다. 이 서비스는 일반 자바/스칼라 프로젝트이며 웹 앱은 Play입니다! 계획. 이 '서비스'및 '앱'이라고하겠습니다. (이 제안 된 구조에 대해 신경 쓰지 마라. 질문의 목적을 위해 단순화하고있다.)

Eclipse 또는 IntelliJ에서 'Service'모듈 또는 Eclipse 용 프로젝트를 종속성으로 추가 할 수있다. 'App'프로젝트. 이렇게하면 'Service'라이브러리에서 변경 작업을 수행 할 때 개발자가 매우 빠르게 처리 할 수 ​​있습니다 (예 : 모델에 속성 추가). 재 컴파일 및 실행은 브라우저를 컴파일, 패키지화, 배포, 가져 오기 및 다시로드하는 것보다 몇 배 빠른 속도입니다.

Play 2.0 및 SBT 문서를 읽었을 때의 유일한 진정한 대답은 '서비스'를 '앱'의 하위 프로젝트로 만드는 것입니다. 이것에 대한 더 좋은 대답이 있습니까?

답변

1

두 가지 옵션이 있습니다.

Rich가 언급 한 첫 번째 것은 로컬 저장소입니다. 이것은 maven이 로컬 캐시로 생성하고 사용중인 dev 컴퓨터의 로컬 폴더를 의미하지 않습니다. LAN상의에있는 중앙 서버를 의미하며 나중에 재생할 수 있도록 Play의 응용 프로그램 버전을 저장합니다. Nexus은 Rich가 추천 한대로 훌륭한 옵션입니다.

두 번째 옵션은 단순히 jar를 빌드하고 "lib"폴더에 관리되지 않는 라이브러리로 배포하는 것입니다. 그런 다음 소스 관리 시스템에 커밋 할 수 있으며 모든 개발자는 같은 것을 갖습니다.

장기적인 관점에서 볼 때 첫 번째 방법을 권장하지만, 선택의 폭이 넓습니다.

비평에 편집 당신은 당신이 의존성을 관리하고 싶지 않다고 말합니다. 내가 상상할 수있는 유일한 세 번째 시나리오는 모든 코드를 블록으로 만들고 싶다는 것입니다. 이 경우 subprojects을 사용할 수 있습니다. 나는 다른 대안을 보지 못한다.

+0

나는 당신이 말하는 것을 고맙게 여긴다. 그러나 당신은 여전히 ​​내가 제거하려고하는 프로세스를 개선하려고 노력하고있다. 이 질문을 조금 수정하기 위해 편집 할 것입니다. –

+0

@AndyDavis 업데이트보기 –

+0

다시 한번 감사드립니다. 내 사례를 살펴보고 하위 프로젝트가 나아갈 수 있는지 알아 보려면 감사하게 생각합니다. –

0

대부분의 경우 실제로 재생에 큰 관심이 있습니다. 그러나 Play가 최상의 솔루션이되지 못하는 경우가 하나 있는데, 바로 지적한 문제입니다. 다른 구성 요소가있을 경우 응용 프로그램에 통합 할 수있는 libraires가 있습니다.

나는 그것이 가능하지 않다는 말은 아니며, 단순히 플레이가 잉태 된 방식이 아닙니다.

+0

미안하지만 그건 FUD입니다. Play 2.0은 sbt를 사용하여 종속성을 관리하며,이 영역의 maven, sbt 또는 ivy 간의 차이는 거의 없습니다. 그렇다면이 프로젝트를 사용하는 모든 프로젝트가 잘못 되었습니까? :) –

+0

Play2에 대한 충분한 경험이 없을 수도 있지만 확실히 Play 1.x의 경우였습니다. –

1

Nexus과 같이 로컬 Maven 미러/프록시로 푸시해야합니다.

+0

이미 로컬 저장소가 있습니다. 나는 그것을 (적어도 개발을 위해) 우회하려고 노력하는만큼 향상 시키려고하지 않는다. –