Command Line Interface

Command Line Interface 를 사용하여 어플리케이션/프로젝트 생성/Domain Class/CRUD 생성, 빌드, 빌드 및 실행 등의 작업을 할 수 있다.
이때 [빌드]와 [빌드 및 실행]에서 수행하는 빌드가 중복되는 작업이므로 [빌드 및 실행]을 수행시키는 경우 [빌드] 단계는 생략될 수 있다.

환경설정

Command Line Interface을 사용하기 위한 환경설정 및 도움말에 대해 알아보자.
  • Anyfrmae 설치 경로\bin 에서 command 창을 실행 시킨 다음 env 명령어를 입력하여 env.bat 파일을 실행시킨다.
    Anyframe Home, Ant Home, Path, Classpath 설정등의 환경설정이 된다.



  • Command를 통한 작업 시, 사용가능한 8가지 command 가 있으며 이는 anyframe -help 라는 명령어를 통해 확인 가능하다.

Command

사용가능한 8가지 command 를 활용해 어플리케이션 생성, 프로젝트 생성, Domain Class 생성, CRUD 생성 등의 작업을 할 수 있다.

어플리케이션 생성

Command Line Interface를 이용해 어플리케이션을 생성해본다.
  1. 환경설정된 command 창에서 어플리케이션을 생성하고 싶은 폴더로 이동한다.
  2. 다음의 어플리케이션 생성 command를 입력한다.
    anyframe create-app emarketplace com.sds.emp
    • anyframe create-app APPLICATION_NAME PACKAGE_NAME -dynamic false
    • emarketplace라는어플리케이션명과 com.sds.emp 라는 패키지명을 가진 어플리케이션을 생성
    • command 입력시 -dynamic true/false 옵션을 이용하여 dynamic reloading 기능을 제공하는 어플리케이션으로 생성할지 말지 결정이 가능하다. -dynamic true/false 옵션을 주지 않은 경우, default 값은 false로 dynamic reloading 기능을 제공하지 않는다.

  3. 어플리케이션 생성이 정상적으로 되었는지 확인한다.
    생성된 어플리케이션에는 다음과 같이, 배포 파일이 위치하게 될 repo 폴더와 2개의 Properties 파일(application-build.properties, web-deploy.properties)이 생성된다.

프로젝트 생성

Command Line Interface 를 이용해 프로젝트를 생성해본다.
Common, Service, Web Type 의 프로젝트를 생성할 수 있다.
  • Common 타입 프로젝트 생성
    1. 어플리케이션이 생성된 폴더 하위로 이동한다. (예를 들어, emarketplace 라는 어플리케이션을 생성시켰다면 emarketplace 폴더 하위에서 command를 실행시키도록 한다.)
    2. common 타입 프로젝트 생성 command를 입력한다.
      anyframe create-project common
      • anyframe create-project PROJECT_TYPE PROJECT_NAME
      • common 타입의 프로젝트를 생성할 때, 프로젝트 명을 따로 명시하지 않는 경우 기본적으로 common 이라는 이름의 프로젝트를 생성한다.

    3. common 타입의 프로젝트가 정상적으로 생성되었는지 확인한다. 프로젝트가 생성되면 eclipse 프로젝트 관련 파일들(.project, .classpath)과 여러 소스 및 테스트 코드 폴더, 빌드 파일(build.xml, build.properties) 등이 생성된다.


  • Service 타입 프로젝트 생성
    1. Service 타입 프로젝트 생성 command를 입력한다.
      anyframe create-project service
      • anyframe create-project PROJECT_TYPE PROJECT_NAME
      • service 타입의 프로젝트를 생성할 때, 프로젝트 명을 따로 명시하지 않는 경우 기본적으로 service라는 이름의 프로젝트를 생성한다.
      • -domain true/false 옵션을 이용하여, 해당 프로젝트를 domain 프로젝트로 사용할지 여부를 결정해주며 기본적으로 false 값이 적용된다. 옵션을 명시하지 않을 경우 최초로 생성되는 service 타입 프로젝트가 domain 프로젝트로 인식된다.

    2. service 타입의 프로젝트가 정상적으로 생성되었는지 확인한다. 프로젝트가 생성되면 eclipse 프로젝트 관련 파일들(.project, .classpath)과 여러 소스 및 테스트 코드 폴더, 빌드 파일(build.xml, build.properties) 등이 생성된다.


  • Web 타입 프로젝트 생성
    1. Web 타입 프로젝트 생성 command를 입력한다.
      anyframe create-project web
      • anyframe create-project PROJECT_TYPE PROJECT_NAME
      • web 타입의 프로젝트를 생성할 때, 프로젝트 명을 따로 명시하지 않는 경우 기본적으로 web 이라는 이름의 프로젝트를 생성한다.

    2. web 타입의 프로젝트가 정상적으로 생성되었는지 확인한다. 프로젝트가 생성되면 eclipse 프로젝트 관련 파일들(.project, .classpath)과 여러 소스 및 테스트 코드 폴더, 빌드 파일(build.xml, build.properties) 등이 생성되며 src/main/webapp/WEB-INF/lib 폴더 하위에 필요 라이브러리들이 배포되어 있다.


Domain Class Generation

Command Line Interface 를 이용해 Domain Class 와 CRUD를 생성해본다.
  1. Domain Class 생성 command를 입력한다.
    anyframe create-model -table "*"
    • anyframe create-model [-options]
    • -basepackage xxx라는 옵션 설정 시,DB Table로 부터 Domain Class를 생성할 때 xxx 패키지 하위로 생성된다.
    • -table xxx라는 옵션 설정을 하지 않는 경우, default 로 모든 DB Table로 부터 Domain Class들을 생성한다. 명시적으로 모든 DB Table에 대해서 Domain Class를 생성해낸다고 표시 하기 위해서는 -table "*" 옵션을 사용한다.
      특정 테이블명을 사용하고 싶은 경우 TABLE NAME을 지정하면 된다. 예) anyframe create-model -table FORUMS -basepackage com.sds.emp.domain


  2. Domain Class 가 정상적으로 생성되었는지 확인한다.


CRUD Generation

  • Business Layer 코드 생성
    1. Business Layer 코드 생성 command를 입력한다.
      anyframe create-service Forums
      • anyframe create-service ENTITY [-options]
      • -service xxx 옵션은 service 타입 프로젝트 중 어느 프로젝트에 코드를 생성시킬지 결정하는 것으로, default 로는 가장 최초에 생성된 service 타입 프로젝트를 인식한다.
      • -package xxx 옵션은 service package를 지정하는 것으로, 이때 중간 package 명을 추가할 수 있다. (ex.subsystem.forums) 기본적으로 package 명은 Domain Class 명의 소문자 형태로 지정된다.

    2. Business Layer 코드가 정상적으로 생성되었는지 확인한다.
  • Presentation Layer 코드 생성
    1. Presentation Layer 코드 생성 command를 입력한다.
      anyframe create-web Forums
      • anyframe create-web ENTITY [-options]
      • -package xxx 옵션은 web package를 지정하는 것으로 Business Layer 코드 생성 시 입력한 package 정보와 동일하게 입력하도록 한다. 기본적으로 package 명은 Domain Class 명의 소문자 형태로 지정된다.

    2. Presentation Layer 코드가 정상적으로 생성되었는지 확인한다.
  • Business Layer 와 Presentation Layer 코드 동시 생성
    1. 다음 command 입력 후 enter
      anyframe create-all Forums
      • anyframe create-all ENTITY [-options]
      • Domain Class 기반의 Business Layer 코드와 Presentation Layer 코드를 동시에 생성해 낸다.
      • -service xxx 옵션은 service 타입 프로젝트 중 어느 프로젝트에 코드를 생성시킬지 결정하는 것으로, default 로는 가장 최초에 생성된 service 타입 프로젝트를 인식한다.
      • -package xxx 옵션은 package 명을 지정하는 것으로, 기본적으로 package 명은 Domain Class 명의 소문자 형태로 지정된다.

    2. Business Layer, Presentation Layer 코드가 정상적으로 생성되었는지 확인한다.

빌드

Command Line Interface를 이용해 빌드해보자.

어플리케이션 빌드

어플리케이션 빌드하는 방법은 다음과 같이 3가지가 있으며, 해당 command 는 어플리케이션이 생성된 경로로 이동하여 실행한다.
  • 어플리케이션 전체 빌드, WEB-INF/classes로 배포시
    anyframe build-app -deploy class

    빌드된 결과를 WEB-INF/classes 에서 확인하며,다음과 같이 생성된다.


  • 어플리케이션 전체 빌드, WEB-INF/lib 하위로 jar 파일 형태로 배포시
    anyframe build-app -deploy jar

    빌드된 결과를 WEB-INF/lib 에서 확인하며,생성한 각각의 프로젝트의 이름(common,service,web)으로 jar 파일이 생성된다.


  • 어플리케이션 전체 빌드로 dynamic reloading 기능을 사용하는 어플리케이션에 대해서 사용하며, WEB-INF/modules/ 폴더 하위로 jar 파일 형태로 배포됨
    anyframe build-app

    빌드된 결과를 WEB-INF/modules/ 폴더 하위에서 확인한다.

프로젝트 빌드

  1. 빌드 할 프로젝트로 이동한다.
  2. ant를 실행하기 위한 build.xml, build.properties 파일이 있는지 확인한다.
  3. command 창을 실행시키고 ant 를 실행시킨다. 이때 default target이 수행된다.
    • ant는 build.xml 파일을 이용해 빌드를 수행하며, build.xml의 default target명은 "default"이다.
    • 기본적으로 ant를 이용하여 빌드를 수행하면 초기화, 컴파일, 패키징, 테스트, 배포 등이 전체 수행된다.
    • ant를 통해 "default-report" target을 수행하면, checkstyle, code duplication 등의 코드 품질검사를 함께 하여 report 결과를 만들어 준다.
    • ant target 은 build.xml 파일을 참고한다.

빌드 및 실행

Command Line Interface를 이용해 어플리케이션 전체 빌드 및 웹 어플리케이션까지 실행시켜보자. Anyframe Gen 설치 시, Jetty가 내장되어 있으므로 배포 및 빌드를 자동화하여 프로젝트 및 코드 생성 후 즉시 기능 확인이 가능하다.

어플리케이션 빌드 및 웹 어플리케이션 실행

웹 어플리케이션을 빌드 및 실행하는 방법은 다음과 같이 3가지가 있으며, 해당 command 는 어플리케이션이 생성된 경로로 이동하여 실행한다.
  • 어플리케이션 전체 빌드 및 실행
    anyframe run
    (dynamic reloading 기능을 사용하지 않는 어플리케이션의 경우에 한하여, 어플리케이션 빌드 옵션과 동일하게 -deploy class 혹은 -deploy jar를 이용할 수 있다.)


    웹 어플리케이션 실행 결과를 웹 브라우저를 띄워서 확인하도록 한다.
    요청 URL에서 Port 정보가 8090인 것에 유의하도록 한다. (Jetty의 기본 Port 정보가 8090임)



  • Jetty 폴더 확인
    어플리케이션의 repo 폴더 하위에 jetty-temp라는 폴더가 생성되어 Jetty가 구동되게 된다. 배포 이후에 클래스나 JAR 파일, JSP 파일등을 반영하고 Jetty로 재확인하고 싶다면 이 폴더의 해당 위치에 배포하도록 한다.