mojohaus / jaxb2-maven-plugin

JAXB2 Maven Plugin
https://www.mojohaus.org/jaxb2-maven-plugin/
Apache License 2.0
106 stars 77 forks source link

Unable to parse configuration of mojo org.codehaus.mojo:jaxb2-maven-plugin:2.3.1:xjc: Cannot convert 'xsd' to Enum #111

Closed felixgao closed 5 years ago

felixgao commented 6 years ago

I am trying to migrate a gradle script into maven. In Gradle I have used the following task

task jaxb {
    System.setProperty('javax.xml.accessExternalSchema', 'all')
    def jaxbTargetDir = file("src/generated-sources/java")

doLast {
    jaxbTargetDir.mkdirs()

    ant.taskdef(
            name: 'xjc',
            classname: 'com.sun.tools.xjc.XJCTask',
            classpath: configurations.jaxb.asPath
    )
    ant.jaxbTargetDir = jaxbTargetDir

    ant.xjc(
            destdir: '${jaxbTargetDir}',
            package: 'com.example.jaxb',
            schema: 'src/main/resources/schema/axml.xsd'
    )
    }
}

everything is generated fine. After Migrate to jaxb2-maven-plugin with

    <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>jaxb2-maven-plugin</artifactId>
                <version>2.3.1</version>
                <executions>
                    <execution>
            <id>xjc</id>
                        <goals>
                            <goal>xjc</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
          <!-- The name of your generated source package -->
          <packageName>com.facebook.jaxb</packageName>
          <sourceType>xsd</sourceType>
          <addGeneratedAnnotation>true</addGeneratedAnnotation>
          <outputDirectory>${project.basedir}/src/main/generated-surces/java</outputDirectory>
          <sources>
             <source>${project.basedir}/src/main/resources/schema/axml.xsd</source>
          </sources>
          <extension>true</extension>
          <verbose>true</verbose>
        </configuration>
</plugin>

when run mvn generate-sources I received the following error.

org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:jaxb2-maven-plugin:2.3.1:xjc (xjc) on project osbr-thrift-server-test: Unable to parse configuration of mojo org.codehaus.mojo:jaxb2-maven-plugin:2.3.1:xjc: Cannot convert 'xsd' to Enum
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.PluginConfigurationException: Unable to parse configuration of mojo org.codehaus.mojo:jaxb2-maven-plugin:2.3.1:xjc: Cannot convert 'xsd' to Enum
        at org.apache.maven.plugin.internal.DefaultMavenPluginManager.populatePluginFields(DefaultMavenPluginManager.java:662)
        at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo(DefaultMavenPluginManager.java:594)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:121)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
        ... 20 more
Caused by: org.codehaus.plexus.component.configurator.ComponentConfigurationException: Cannot convert 'xsd' to Enum
        at org.codehaus.plexus.component.configurator.converters.basic.EnumConverter.fromConfiguration(EnumConverter.java:51)
        at org.eclipse.sisu.plexus.CompositeBeanHelper.convertProperty(CompositeBeanHelper.java:273)
        at org.eclipse.sisu.plexus.CompositeBeanHelper.setProperty(CompositeBeanHelper.java:210)
        at org.codehaus.plexus.component.configurator.converters.composite.ObjectWithFieldsConverter.processConfiguration(ObjectWithFieldsConverter.java:101)
        at org.codehaus.plexus.component.configurator.BasicComponentConfigurator.configureComponent(BasicComponentConfigurator.java:34)
        at org.apache.maven.plugin.internal.DefaultMavenPluginManager.populatePluginFields(DefaultMavenPluginManager.java:632)
        ... 23 more
Caused by: java.lang.IllegalArgumentException: No enum constant org.codehaus.mojo.jaxb2.javageneration.SourceContentType.xsd
        at java.lang.Enum.valueOf(Enum.java:238)
        at org.codehaus.plexus.component.configurator.converters.basic.EnumConverter.fromConfiguration(EnumConverter.java:47)
        ... 28 more

Would like to get the same behavior as the XJCTask and not sure what to do.

lennartj commented 5 years ago

The reason is that xsd is not a valid SourceContentType value. You normally do not need to assign that parameter - but if you do, use one of the values below:

  1. dtd
  2. xmlschema
  3. relaxng
  4. relaxng-compact
  5. wsdl