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"에 생성한다.