Maven을 통한 다중 모듈 구성(Jersey RESTful)

11114 단어 MavenjerseyRESTful
저번까지의 프로젝트를 다모듈로 구성한다.

결론


결론부터.
지난번 보도에서 다음과 같은 형식을 상상했다.
jersey_sample
  |- pom.xml
  |- src/main/java/package/xxx/sampleapp
  |- serverapi
  |    |- pom.xml
  |    |- src/main/java/package/yyy/server
  |- repository
       |- pom.xml
       |- src/main/java/package/zzz/repository
우선, 다중 모듈의parent는 소스 코드가 있을 수 없기 때문에 모두 하위 모듈이어야 합니다.
그리고 나는 이렇게 하면 안 된다고 생각한다
jersey_sample
  |- pom.xml
  |- sampleapp
  |    |- pom.xml
  |    |- src/main/webapp (※javaコードを持たない)
  |- serverapi
  |    |- pom.xml
  |    |- src/main/java/package/yyy/server (※webappフォルダを持たない)
  |- repository
       |- pom.xml
       |- src/main/java/package/zzz/repository
WebApp만 있는 모듈을 만들 수 있을까 해서 서버api 모듈을 참조하여 API를 호출할 수 있을까 생각했는데 아무리 해도 잘 안 됐어요.
Eclipse라면 학급 경로를 추가하는 방법이 있을 것 같은데 IntelliJ는 어떻게 할지 몰라요...그리고 IDE에서 완성되더라도 배포는 어떻게 됩니까?
그래서 결과는 이렇게 됐다.
jersey_sample
  |- pom.xml
  |- serverapi
  |    |- pom.xml
  |    |- src/main/
  |            |- java/package/yyy/server
  |            |- webapp
  |- repository
       |- pom.xml
       |- src/main/java/package/zzz/repository
API 레이어webapp의 형식을 포기했습니다.응, 나는 이렇게 하는 것이 사실상 매우 필요한 것임을 알고 있어서 좋다(땀)
그러나 이 일대의 버전은 업그레이드가 빨라 보통 불평을 해도 낡은 정보들로 원하는 정보를 찾기 어렵다.검색 기술을 연마하지 않으면(땀)

다중 모듈 구성


1. 부모님pom.xml 제작


우선 현재 프로젝트 노선 중pom.xml을 부모로 직접 사용한다.
의존 관계는 원래 각 모듈에 필요한 것을 넣어야 하기 때문에 (repository층은 servlet 같은 것을 필요로 하지 않기 때문에) 지금 움직이지 않으면 무섭다(웃음). 그래서 잠시 이렇게 두었다.<package>pom로 변경하면 됩니다.
pom.xml
    <groupId>com.example</groupId>
    <artifactId>simple-webapp</artifactId>
    <packaging>pom</packaging>
    <version>1.1-SNAPSHOT</version>
    <name>simple-webapp</name>
버전도 바뀌었어요.

2. 서브모듈 만들기


우선 빈 서브 모듈을 만듭니다.
  • IntelliJ의 프로젝트 경로를 마우스 오른쪽 버튼으로 클릭하고 [New]-[module]
  • Maven을 선택하고 [Next] 클릭
  • 입력serverapi(이름) 후 [OK] 클릭
  • 추가 모듈
  • 위 단계를 반복하여 repository 모듈을 추가합니다.
    끝나고 나면 이런 구성일 거예요.(하위 폴더가 닫혔음)

    3. Repository 모듈의 제작


    다음 클래스 원본 파일을 빈 repository 모듈로 이동합니다.
  • Employees
  • EmployeeRepository
  • 각 예외류
  • 예외 처리 프로그램 제외
  • (1) pom.xml 편집

    <packaging>jar입니다.
    pom.xml
        <artifactId>repository</artifactId>
        <packaging>jar</packaging>
    

    (2) DnD를 통해 Employee 클래스를 웨어하우스 모듈로 이동

  • 파일 Drag & Drop을 창고 모듈에 있는 src/main/java 폴더

  • 목적지를 묻는 말에 "To package"를 선택하여 원하는 포장 이름을 전체 경로로 기술합니다.
  • 이곳의 포장은 원래com.example에서 com.example.jerseysimple.repository.models로 변경되었다

  • 새 패키지를 만들 것인지 묻는 질문에 "예"를 클릭합니다.

  • 충돌 경고를 보냈지만 당분간 그대로
  • 나중에 패키지 관련 컨텐츠를 다시 통합합니다.

  • 다른 반에 대해서도 각각 아래 포장으로 이동했다.
  • EmployeeRepositpry => com.example.jerseysimple.repository
  • 예외 클래스=>com.example.jerseysimple.repository.exceptions

    (2) 모듈로 이동 후


    모든 이동이 완료되면 이런 모양입니다.
    또 이 모듈의 일부 반도 테스트를 했다.이후 부모 레벨mvn test에서 하위 모듈의 테스트가 모두 실행되었는지 확인하고 싶습니다.EmployeeRepository 본질적인 것이 아니기 때문에 쓰지 않지만, 예외 학과의 반은 간단한getMessage 테스트를 할 수 있기 때문에 준비했다.

    이 때, 열기 EmployeeRepository.java 는 컴파일 오류를 경고합니다.
    이거 내가 고칠게.

    (3) 모듈을 통한 구축

  • 예외 클래스의 import 문장을 모두 삭제합니다
  • 빨간 글자Employee에 커서를 대고 조금만 기다리면 알림 import의 팝업이 나타나므로 표시되는 단축키를 누르십시오.(Mac는 opon+오락)
  • 기타 예외 클래스에 대해서도 같은 조작을 반복한다
  • 메뉴의 [Build]에서 [Build Modulerepository] 선택
  • 이렇게 하면 시험도 통과할 것이다.
    또 건축물과 테스트의 확인도 단말기 등에서 repository 모듈로 이동mvn install할 수 있다.

    4.serverapi 모듈 만들기


    (1) serverapi/pom.xml 편집


    - <packaging> - war- reipository 모듈에 대한 종속성 추가
    serverapi/pom.xml
        <artifactId>serverapi</artifactId>
        <packaging>war</packaging>
    
        <dependencies>
            <dependency>
                <groupId>com.example</groupId>
                <artifactId>repository</artifactId>
                <version>${project.version}</version>
            </dependency>
        </dependencies>
    

    (2) 원본 파일 이동


    Repository 모듈과 같은 절차로 다음 종류를 이동하여 인용을 수정합니다.
  • EmployeeResource
  • com.example.jerseysimple.api 가방
  • My Resource(이것은 w를 삭제할 수 있음)
  • com.example.jerseysimple.api 가방
  • 예외처리류
  • com.example.jerseysimple.api.handlers 가방
  • 테스트 클래스
  • com.example.jerseysimple.api 가방
  • (3) 모바일 웹 디렉터리

    serverapi 모듈의 src/main 아래로 이동합니다.

    (4) 모듈로 이동 후


    모든 이동이 완료되면 이런 모양입니다.

    모듈을 구축하고 테스트를 실행하십시오.
    ※ mvn 명령은 현재 의존 관계를 해결할 수 없고, 실행할 수 없습니다.IntelliJ부터 시작하십시오.부모님 모듈pom이 아직 제작되지 않았기 때문일 거예요.

    5. 노선 지우기


    (1) 폴더 삭제


    루트에서 다양한 폴더를 삭제합니다.
  • src
  • resources
  • (2) 청결


    프로젝트 경로에서 실행mvn clean.

    6. 실행


    (1) 설계 객체 수정


    Tomcat에서 시작하려면 [Edit Configuration]을 변경해야 합니다.
  • [Deployment] 탭을 표시하고 아래의 [+] 클릭
  • [Articat...]선택 항목
  • serverapi:war exploded를 선택하고 [OK]를 클릭합니다.
  • simple-webapp:war exploded를 클릭하고 아래의 [-]를 클릭합니다.
  • [OK]
  • 를 클릭합니다.

    (2) 실행


    실행 버튼을 클릭합니다.
    브라우저에서 각 API에 액세스하십시오.curl 명령과 Postman이 실행되기 시작했을 때 war가 바뀌었고 URL도 바뀌었으니 주의하세요.
    그리고 mvn 명령도 루트부터 구축하고 테스트가 모두 실행되는지 확인합니다.
    아래 명령으로 보고서를 제출하면 각 모듈의 보고서가 한데 묶여 확인이 쉽습니다.
    ※ 전제는 여기. 기사에 삽입된 플러그인입니다.
    $ mvn clean \
        test -Dmaven.test.failure.ignore=true \
        site -DgenerateReports=false \
        -Daggregate=true \
        surefire-report:report
    
    프로젝트 경로target/site에서 내보냅니다.

    감상


    API를 만드는 것도 즐거워졌다.그래도 Gradle을 쓰고 싶고 Kotlin을 쓰고 싶어요.
    이어 스프링 프레임워크(not Boot)+언승욱 구성에 도전한다.
    Spring Framework만으로도 RESTful API를 제작할 수 있기 때문에 특별히 Jersey와 협업해도 될까요?이런 데도 있지만 해보고 싶어서 했어요(웃음)
    여기까지의 소스는 이미 아래에 올렸어요.

    참고 자료

  • Spring Boot 애플리케이션은 maven의 multi module로 구성됨
    https://qiita.com/rubytomato@github/items/118817023845b4284553
  • 좋은 웹페이지 즐겨찾기