1. xjc

xjc 툴은 XML 스키마 파일을 Java 프로그래밍 언어로 된 JAXB Content 클래스들로 변환한다.

다음은 툴 사용법, 파라미터 및 예제에 대한 설명이다.

  • 사용법

    Usage: xjc [-options ...] <schema file/URL/dir/jar> ... [-b <bindinfo>] ...
    If dir is specified, all schema files in it will be compiled.
    If jar is specified, /META-INF/sun-jaxb.episode binding file will be compiled.
    Options:
      -nv                  :  do not perform strict validation of the input schema(s)
      -extension           :  allow vendor extensions
                                - do not strictly follow the Compatibility Rules and App E.2 from the JAXB Spec
      -b <file/dir>        :  specify external bindings files each <file> must have its own -b).
                                If a directory is given, **/*.xjb is searched
      -d <dir>             :  generated files will go into this directory
      -p <pkg>             :  specify the target package
      -httpproxy <proxy>   :  set HTTP/HTTPS proxy. Format is [user[:password]@]proxyHost:proxyPort
      -httpproxyfile <f>   :  Works like -httpproxy but takes the argument in a file to protect password
      -classpath <arg>     :  specify where to find user class files
      -catalog <file>      :  specify catalog files to resolve external entity references
                                support TR9401, XCatalog, and OASIS XML Catalog format.
      -readOnly            :  generated files will be in read-only mode
      -npa                 :  suppress generation of package level annotations (**/package-info.java)
      -no-header           :  suppress generation of a file header with timestamp
      -target (2.0|2.1)    :  behave like XJC 2.0 and generate code that doesnt use any 2.1 features.
      -encoding <encoding> :  specify character encoding for generated source files
      -enableIntrospection :  enable the correct generation of Boolean getters and setters to enable Bean Introspection APIs.
      contentForWildcard   :  disable XML security features when parsing XML documents.
      -xmlschema           :  treat input as W3C XML Schema (default)
      -relaxng             :  treat input as RELAX NG (experimental,unsupported)
      -relaxng-compact     :  treat input as RELAX NG compact syntax experimental,unsupported)
      -dtd                 :  treat input as XML DTD (experimental,unsupported)
      -wsdl                :  treat input as WSDL and compile schemas inside it (experimental,unsupported)
      -verbose             :  be extra verbose
      -quiet               :  suppress compiler output
      -help                :  display this help message
      -version             :  display version information
      -fullversion         :  display full version information
    
    Extensions:
      -Xlocator            :  enable source location support for generated code
      -Xsync-methods       :  generate accessor methods with the 'synchronized' keyword
      -mark-generated      :  mark the generated code as @javax.annotation.Generated
      -episode <FILE>      :  generate the episode file for separate compilation
      -Xpropertyaccessors  :  Use XmlAccessType PROPERTY instead of FIELD for generated classes
  • 파라미터

    파라미터 설명

    -nv

    스키마 유효성 검사를 할지 여부를 설정한다. (true | false)

    -extension

    XJC 바인딩 컴파일러는 확장 모드로 실행할지 여부를 설정한다.

    (true | false, 기본값: false)

    -b <file/dir>

    처리할 하나 이상의 외부 바인딩 파일들을 설정한다.

    -d <dir>

    XJC 바인딩 컴파일러는 기본값으로 현재 디렉터리에 Java Content 클래스들을 생성한다. 이 옵션을 사용하면 다른 디렉터리에 클래스들을 생성할 수 있다.

    -p <pkg>

    이곳에 명시한 Target 패키지 이름은 어떤 다른 Customization도 Overwrite한다.

    -httpproxy <proxy>

    HTTP/HTTPS 프록시를 설정한다.

    -httpproxyfile <f>

    -httpproxy 옵션과 유사하지만 암호를 보호하기 위해 파일에서 인수를 사용한다.

    -classpath <arg>

    <jxb:javaType>와 <xjc:superClass> Customization에 등록된 클라이언트 애플리케이션 클래스들을 찾을 곳을 설정한다.

    -catalog <file>

    TR9401, XCatalog, OASIS XML Catalog 포맷에 관한 외부 카탈로그 파일을 설정한다.

    -readOnly

    true일 경우에 Java 소스 파일들은 읽기 가능 모드이다. (기본값: false)

    -npa

    package-info.java라는 파일에 패키지 수준의 Annotation 생성을 요약한다.

    -no-header

    시간 소인이 있는 파일 헤더 생성을 억제하도록 지정한다.

    -target (2.0|2.1)

    XJC 2.0 또는 2.1과 같이 행동하고, 2.2 기능을 사용하지 않는 코드를 생성한다.

    -xmlschema

    입력은 W3C XML 스키마로 처리하도록 지정한다.

    -relaxng, -relaxng-compact, -dtd, -wsdl와 -xmlschema의 5개 중에 -xmlschema이 기본값이다.

    -relaxng

    입력을 RELAX NG로 처리하도록 지정한다.

    -relaxng-compact

    입력을 RELAX NG의 간단한 구문으로 처리하도록 지정한다.

    -dtd

    XML DTD 파일을 컴파일러의 입력 스키마로 사용한다.

    -wsdl

    WSDL 파일을 입력하여 그 안에 사용되고 있는 스키마 파일들을 컴파일한다.

    -verbose

    Verbose 메시지를 출력한다.

    -quiet

    진행 정보 또는 경고 메시지와 같은 컴파일러 Output 메시지들을 보여주지 않는다.

    -help

    컴파일러 사용법을 출력한다.

    -version

    컴파일러 버전을 출력한다.

  • 예제

    xjc는 JEUS_HOME/bin/ 디렉터리에 위치한 일반적인 스크립트 파일이다.

    xjc 툴을 실행하는 예는 다음과 같다.

    $ xjc -d build/classes -p com.tmaxsoft src/conf/ts.xsd

    위의 명령어는 ts.xsd 스키마 파일로부터 패키지명이 "com.tmaxsoft"인 컴파일된 Java 클래스 파일들을 "build/classes"에 생성한다.