2009-12-22 8 views
1

나는 여러 가지 다른 것들과 공유하는 svn 저장소에서 응용 프로그램을 옮겨서 새로운 것으로 바꾼다. 그래서 레이아웃으로 새로운 출발을 할 기회가 있습니다.내 저장소를 어떻게 배치해야합니까?

응용 프로그램 자체에는 데이터베이스와 통신하는 합리적인 표준 Java 웹 응용 프로그램과 데이터베이스를 폴링하는 백엔드 구성 요소 인 Java가 있으며 발견 한 내용을 기반으로 장기 실행 처리 작업을 시작합니다. 기본적으로 DB는 대기열로 사용됩니다. 이 코드는 세 가지 패키지로 구분되어 있습니다

  1. org.blah.common - 코드 등의 DAO와 같은 웹 응용 프로그램 및 백 엔드
  2. org.blah.webapp 사이에 공유되는 - 웹 응용 프로그램; 이는 org.blah.common에 달려 있으며 .war 파일을 만듭니다.
  3. org.blah.backend - 백 엔드 프로세스. 이것은 org.blah.common에 의존하며 jar와 일부 스크립트가 포함 된 tar 파일로 빌드됩니다.

또한 tomcat 및 apache config의 다른 비트도 svn에 넣고 싶습니다.

지금 세 패키지는 모두 src 디렉토리 아래 svn에 있으며, 다른 부분을 만드는 다른 타겟을 가진 개미 스크립트가 있습니다. svn : ignore 속성은 꽤 커졌고 어떤 패키지의 코드는 src 아래의 코드와 관련이 있지만 다른 패키지의 스크립트는 tomcat을 시작하고 중지하는 것이기 때문에 바로 알 수 없습니다.

나는 maven standard directory layout으로 끌었지만 이전에는 사용하지 않았습니다. 나는이 함께 왔어요 : 바로 지금, 내가 받는다는로 마이그레이션하지 않을

common/ 
    src/ 
     main/ 
      java/ 
      resources/ 
     test/ 
      java/ 
      resources/ 
    target/ # Not checked in 
     common.jar 
webapp/ 
    src/ 
     main/ 
      java/ 
      resources/ 
      webapp/ 
     test/ 
      java/ 
      resources/ 
    target/ # Not checked in 
     webapp.war 
backend/ 
    src/ 
     main/ 
      java/ 
      perl/ 
      resources/ 
     test/ 
      java/ 
      resources/ 
    target/ # Not checked in 
     backend.tar 
infra/ 
    tomcat/ 
     bin/ 
     conf/ 
    apache/ 
     bin/ 
     conf/ 
db/ 
    tables/ 
    procs/ 
    triggers/ 

주 - 그들이 작동하기 때문에 나는 기존의 개미 스크립트를 적용합니다. 미래의 어느 시점에서 maven (또는 buildr과 같은 것, maven 레이아웃을 사용하는)으로 이동하는 옵션을 유지하고 싶습니다.

그래서 :

  • 이 저장소를 배치 합리적인 방법처럼 보이는가? 저 아래로 나를 더 멀리 위로 끌 수있는 것이 있습니까?
  • 앱을 처음 접하는 사람들에게 이것이 분명 할 것입니까?
  • 이것을 사용하기로 결정했다면, maven과 호환 가능합니까? (나는 이론적으로, 어떤 레이아웃 으로든 maven을 작동시킬 수 있다고 생각하지만, 그들은 이유를 위해 표준을 추천한다고 생각한다.)
  • IDE가 이것에 문제가 있습니까? (내가 사용중인 컴퓨터에 따라 intellij 또는 Eclipse를 사용합니다. 내 팀의 다른 사람들 - 도움이되는 의견이없는 사람들 - netbeans 사용)

답변

1
  • 이는 저장소를 배치하는 합리적인 방법처럼 보입니까? 저 아래로 나를 더 멀리 위로 끌 수있는 것이 있습니까?

음, Maven은 레이아웃을 포함하여 업계의 모범 사례를 캡처, 그래서 이것은 당신이 지금 메이븐을 사용하지 않는 경우에도 아주 좋은 선택을 보인다. 실제로 이것은 다른 기술에서 Maven으로 이동할 때 권장되는 마이그레이션 전략입니다. 먼저 Maven 레이아웃으로 이동하고 기존 빌드 스크립트를 업데이트 한 다음 Maven을 소개합니다. 귀하의 경우, 모든 프로젝트의 수명주기가 같을 경우 (모두 릴리스 된 경우), Maven을 사용하여 이러한 방식으로 관리 할 수없는 인프라 프로젝트에 대한 내용을 제외하고는 특별한 언급이 없지만 지금 당장은 아무것도 차단하지 않습니다.

  • 이것은 앱을 처음 사용하는 사람들에게 분명 할 것입니까?

I 찾으 꽤 명확하고 정직하게, 어떤 사람들은 그것으로 문제가 그들이 적응할 수없는 경우에, 어쩌면 그것은 해결 될 :

    그들에게 그 필요성을인지
  • 이것을 사용하기로 결정했다면 maven과 호환 가능합니까? (I 이론적으로, 어떤 레이아웃을 받는다는 작업을 할 수 있다는 것을 알고 있지만, 나는 그들이 이유에 대한 표준을 권장 생각합니다.)

그것은 인프라 부분을 제외하고 (Maven을 거의 완전히 호환 보인다 말했듯 그러나 이것은 정말로 문제가 아닙니다.) 그리고 네, Maven의 설정을 수정하거나 기본 규칙을 사용할 필요가 없다면 분명히 간단합니다. Ant 빌드와 병행하여 Maven 빌드를 설정하면 완벽하게 이동할 수 있습니다.

  • IDE에 문제가 있습니까? (I가있어하는 컴퓨터에 따라, 나는 인 IntelliJ 또는 Eclipse를 사용하는 다른 사람들을 우리 팀에 -. 누가 유용하게이에 대한 의견이 없습니다 -. 사용 넷빈즈를) 그것은 오랜 시간 이후되었습니다

Ant 프로젝트를이 IDE 중 하나로 가져 오지는 않았지만이 레이아웃을 다룰 수 있어야한다고 생각합니다. (Maven을 사용할 때는 100 % 확실합니다). 이 질문에 대답하는 가장 좋은 방법은 물론 몇 가지 테스트를 수행하는 것입니다.

+0

좋은 소리. 고마워. IntelliJ와 Eclipse로 테스트를 해본 결과 둘 다 더 행복해 보입니다. – Andy

+0

사실 Eclipse, IntelliJ 및 NetBeans는 pom.xml이 제공 될 때 수동 조정없이이 레이아웃을 처리 할 수 ​​있습니다. Ant 만 사용할 때 이것이 사실인지 나는 모른다. –

0

유일한 문제는 위의 레이아웃이 아닌, src 디렉토리에 직접 소스 코드가있을 것으로 기대합니다. 그러나 나는 그것이 특히 Eclipse 내에서 아주 빨리 극복 할 수있는 생각의 방법이라고 생각한다.

0

왜 저장소에 대상 디렉토리가 있습니까? 나는 그들이 쉽게 재현 될 수 있기 때문에 빌드 결과를 체크하지 않는 팬이다. 파일을 쉽게 재생할 수없는 경우 바이너리를 체크인하는 대신 해결해야하는 문제입니다.

이외에도이 레이아웃에는 문제가 없습니다. tomcat 디렉토리를 제외하고 표준 maven 레이아웃입니다.

+0

아, 죄송합니다. 체크인을하지 않았으므로 결국 끝납니다. 그 질문을 명확하게 편집 할 것입니다. – Andy

관련 문제