Generating XML Schema from JAXB class files in Ant

丶灬走出姿态 提交于 2019-12-04 12:35:42
bdoughan

You could probably write something fairly easily, and then call it from Ant:

import java.io.File;
import java.io.IOException;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.SchemaOutputResolver;
import javax.xml.transform.Result;
import javax.xml.transform.stream.StreamResult;

public class SchemaGenerator {

    public static void main(String[] args) throws Exception {
        String contextPath = args[0];
        String outputDir = args[1];
        JAXBContext jc = JAXBContext.newInstance(contextPath);
        jc.generateSchema(new MySchemaOutputResolver(schemaFileName));
    }

    private static class MySchemaOutputResolver extends SchemaOutputResolver {

        private String outputDir;

        public MySchemaOutputResolver(String outputDir) {
            this.outputDir = outputDir;
        }

        public Result createOutput(String namespaceURI, String suggestedFileName) throws IOException {
            File file = new File(outputDir + "/" + suggestedFileName);
            StreamResult result = new StreamResult(file);
            result.setSystemId(file.toURI().toURL().toString());
            return result;
        }

    }   

}

In your context path you would need a jaxb.index file with a list of classes to be included in your JAXBContext. Or you could pass the class names to the SchemaGenerator class and load them via a ClassLoader.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!