in src/main/java/org/apache/xmlbeans/impl/tool/MavenPlugin.java [198:330]
public void execute() throws MojoExecutionException, MojoFailureException {
if (sourceDir == null || sourceDir.isEmpty() || !new File(sourceDir).isDirectory()) {
throw new MojoFailureException("Set configuration <sourceDir> (='"+sourceDir+"') to a valid directory containing *.xsd,*.wsdl files.");
}
if (baseSchemaLocation == null || baseSchemaLocation.isEmpty()) {
throw new MojoFailureException("baseSchemaLocation is empty");
}
if (sourceSchemas == null) {
getLog().debug("sourceSchemas is null");
}
if (classPath == null) {
getLog().debug("classPath is null");
}
final List<File> xsds = new ArrayList<>();
final List<File> wsdls = new ArrayList<>();
final List<File> javas = new ArrayList<>();
File base = new File(sourceDir);
Resource resource = new Resource();
resource.setDirectory(sourceDir);
resource.setTargetPath(baseSchemaLocation);
// if sourceSchemas is not specified use all found schemas
// otherwise convert comma-separated string to regex including glob parameter
Pattern pat = Pattern.compile(sourceSchemas == null ? ".*" :
"(" + sourceSchemas
.replace(",","|")
.replace(".", "\\.")
.replace("*",".*") +
")");
final Collection<File> schemaFiles = FileUtil.find(base, pat, recurseSourceSubdirs);
for (File sf : schemaFiles) {
String name = sf.getName();
switch (name.replaceAll(".*\\.", "")) {
case "wsdl":
wsdls.add(sf);
break;
case "java":
javas.add(sf);
break;
default:
xsds.add(sf);
break;
}
resource.addInclude(name);
}
resources = Collections.singletonList(resource);
if (buildSchemas) {
List<File> configs = (xmlConfigs == null || xmlConfigs.isEmpty()) ? Collections.emptyList()
: Stream.of(xmlConfigs.split(",")).flatMap(s ->
Stream.of(new File(s), new File(base, s)).filter(File::exists)
).collect(Collectors.toList());
List<File> classPathList = new ArrayList<>();
List<URL> urls = new ArrayList<>();
if (classPath != null) {
for (String classpathElement : classPath.split(",")) {
File file = new File(classpathElement);
classPathList.add(file);
try {
urls.add(file.toURI().toURL());
} catch (MalformedURLException e) {
throw new MojoFailureException("invalid classpath: "+file, e);
}
}
}
ClassLoader cl = new URLClassLoader(urls.toArray(new URL[0]));
EntityResolver entityResolver = MavenPluginResolver.getResolver(catalogLocation);
URI sourceDirURI = new File(sourceDir).toURI();
entityResolver = new PassThroughResolver(cl, entityResolver, sourceDirURI, baseSchemaLocation);
Parameters params = new Parameters();
params.setXsdFiles(files(xsds));
params.setWsdlFiles(files(wsdls));
params.setJavaFiles(files(javas));
params.setConfigFiles(files(configs));
params.setClasspath(files(classPathList));
params.setName(name);
params.setSrcDir(new File(javaTargetDir));
params.setClassesDir(new File(classTargetDir));
params.setNojavac(sourceOnly);
params.setVerbose(verbose);
params.setEntityResolver(entityResolver);
params.setQuiet(quiet && quite); //setting either quiet or quite to false will disable quiet mode
params.setNoUpa(noUpa);
params.setNoPvr(noPvr);
params.setNoAnn(noAnn);
params.setCopyAnn(copyAnn);
params.setNoVDoc(noVDoc);
if (repackage != null && !repackage.isEmpty()) {
params.setRepackage("org.apache.xmlbeans.metadata:"+repackage);
}
if (mdefNamespaces != null && !mdefNamespaces.isEmpty()) {
params.setMdefNamespaces(new HashSet<>(mdefNamespaces));
}
List<XmlError> errorList = new ArrayList<>();
params.setErrorListener(errorList);
if (partialMethods != null && !partialMethods.isEmpty()) {
params.setPartialMethods(parsePartialMethods(partialMethods));
}
params.setDownload(download);
params.setBaseDir(basedir);
params.setCompiler(compiler);
params.setMemoryInitialSize(memoryInitialSize);
params.setMemoryMaximumSize(memoryMaximumSize);
params.setOutputJar(outputJar);
params.setDebug(debug);
params.setExtensions(extensions);
if (sourceCodeEncoding != null && !sourceCodeEncoding.isEmpty()) {
params.setSourceCodeEncoding(sourceCodeEncoding);
}
boolean result = SchemaCompiler.compile(params);
if (!result) {
throw new MojoFailureException("Schema compilation failed!\n"+
errorList.stream().map(XmlError::toString).collect(Collectors.joining("\n"))
);
}
Resource genResource = new Resource();
genResource.setDirectory(classTargetDir);
project.addResource(genResource);
project.addCompileSourceRoot(javaTargetDir);
}
}