mojohaus / jaxb2-maven-plugin

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

jaxb2-maven-plugin Jakarta #171

Open ImanGharib opened 3 years ago

ImanGharib commented 3 years ago

I am trying to migrate to java 11 and jakarta. I need to create java classes from XSD Files as I did in Java EE. I have changed all jaxb imports into jakarta. But I can not make jaxb2 to create classes with jakarta namspace instead of jaxb. If I add no dependencies to the plugin part then the class will be created with javax namspace, which I do not need and the imorts can not be found anyway with error java: package javax.xml.bind.annotation does not exist. The generated class is:

`package org.ttt.raw.reporting.core.fussnote; import javax.xml.bind.annotation.XmlAccessType; // I need to have jakarta.xml.bind ... here! import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlType; /**

nekator commented 3 years ago

I tried the same an came up with the following solution:

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>jaxb2-maven-plugin</artifactId>
                <version>2.4</version>
                <dependencies>
                    <dependency>
                        <groupId>org.glassfish.jaxb</groupId>
                        <artifactId>jaxb-xjc</artifactId>
                        <version>3.0.1</version>
                    </dependency>
                    <dependency>
                        <groupId>org.glassfish.jaxb</groupId>
                        <artifactId>jaxb-jxc</artifactId>
                        <version>3.0.1</version>
                    </dependency>
                    <dependency>
                        <groupId>org.glassfish.jaxb</groupId>
                        <artifactId>jaxb-runtime</artifactId>
                        <version>3.0.1</version>
                    </dependency>
                    <dependency>
                        <groupId>org.glassfish.jaxb</groupId>
                        <artifactId>jaxb-core</artifactId>
                        <version>3.0.1</version>
                    </dependency>
                    <dependency>
                        <groupId>com.sun.activation</groupId>
                        <artifactId>jakarta.activation</artifactId>
                        <version>2.0.1</version>
                    </dependency>
                </dependencies>
            </plugin>
RomainPruvostMHH commented 2 years ago

Hi @ImanGharib and @nekator ,

I'm facing with a similar problem. i'm trying to generate Java objects with jakarta.* package. And it doesn't work, even with your previous propositions.

Below is my pom file :

<?xml version="1.0"?>
<project
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
    xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <modelVersion>4.0.0</modelVersion>
    <artifactId>sample-jaxb</artifactId>
    <dependencies>
        <dependency>
            <groupId>jakarta.xml.bind</groupId>
            <artifactId>jakarta.xml.bind-api</artifactId>
            <version>3.0.1</version>
        </dependency>
        <dependency>
            <groupId>jakarta.activation</groupId>
            <artifactId>jakarta.activation-api</artifactId>
            <version>2.0.1</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jaxb</groupId>
            <artifactId>jaxb-runtime</artifactId>
            <version>3.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jaxb</groupId>
            <artifactId>jaxb-core</artifactId>
            <version>3.0.1</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>jaxb2-maven-plugin</artifactId>
                                <version>2.5.0</version>
                <dependencies>
                    <dependency>
                        <groupId>jakarta.xml.bind</groupId>
                        <artifactId>jakarta.xml.bind-api</artifactId>
                        <version>3.0.1</version>
                    </dependency>
                    <dependency>
                        <groupId>org.glassfish.jaxb</groupId>
                        <artifactId>jaxb-xjc</artifactId>
                        <version>3.0.1</version>
                    </dependency>
                    <dependency>
                        <groupId>org.glassfish.jaxb</groupId>
                        <artifactId>jaxb-jxc</artifactId>
                        <version>3.0.1</version>
                    </dependency>
                    <dependency>
                        <groupId>org.glassfish.jaxb</groupId>
                        <artifactId>jaxb-runtime</artifactId>
                        <version>3.0.1</version>
                    </dependency>
                    <dependency>
                        <groupId>org.glassfish.jaxb</groupId>
                        <artifactId>jaxb-core</artifactId>
                        <version>3.0.1</version>
                    </dependency>
                    <dependency>
                        <groupId>jakarta.activation</groupId>
                        <artifactId>jakarta.activation-api</artifactId>
                        <version>2.0.1</version>
                    </dependency>
                </dependencies>
                <executions>
                    <execution>
                        <id>xjc-sample</id>
                        <goals>
                            <goal>xjc</goal>
                        </goals>
                        <configuration>
                            <packageName>jaxb.sample</packageName>
                            <xjbSources>
                                <xjbSource>${project.build.directory}/bindings.xjb
                                </xjbSource>
                            </xjbSources>
                            <sources>
                                <source>src/test/resources/xsd/</source>
                            </sources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

And i got this error with the command mvn compile :

[INFO] --- jaxb2-maven-plugin:2.5.0:xjc (xjc-sample) @ sample-jaxb ---
[WARNING] Error injecting: org.codehaus.mojo.jaxb2.javageneration.XjcMojo
java.lang.Error: java.lang.ClassNotFoundException: com.sun.xml.bind.v2.model.core.package-info
    at org.codehaus.mojo.jaxb2.AbstractJaxbMojo.<clinit>(AbstractJaxbMojo.java:171)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
    at com.google.inject.internal.DefaultConstructionProxyFactory$ReflectiveProxy.newInstance(DefaultConstructionProxyFactory.java:126)
    at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:114)
    at com.google.inject.internal.ConstructorInjector.access$000(ConstructorInjector.java:32)
    at com.google.inject.internal.ConstructorInjector$1.call(ConstructorInjector.java:98)
    at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:112)
    at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:127)
    at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66)
    at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:93)
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:306)
    at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1050)
    at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1086)
    at org.eclipse.sisu.space.AbstractDeferredClass.get(AbstractDeferredClass.java:48)
    at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:85)
    at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:57)
    at com.google.inject.internal.ProviderInternalFactory$1.call(ProviderInternalFactory.java:66)
    at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:112)
    at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:127)
    at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66)
    at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61)
    at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:47)
    at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1050)
    at org.eclipse.sisu.inject.Guice4$1.get(Guice4.java:162)
    at org.eclipse.sisu.inject.LazyBeanEntry.getValue(LazyBeanEntry.java:81)
    at org.eclipse.sisu.plexus.LazyPlexusBean.getValue(LazyPlexusBean.java:51)
    at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:263)
    at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:255)
    at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo(DefaultMavenPluginManager.java:520)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:124)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:957)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:289)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:193)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)
Caused by: java.lang.ClassNotFoundException: com.sun.xml.bind.v2.model.core.package-info
    at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
    at org.codehaus.mojo.jaxb2.AbstractJaxbMojo.<clinit>(AbstractJaxbMojo.java:167)
    ... 53 more
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE

Did you success to generate code with jakarta packages ?

Any help would be appreciate

nekator commented 2 years ago

Hi @ImanGharib and @nekator ,

I'm facing with a similar problem. i'm trying to generate Java objects with jakarta.* package. And it doesn't work, even with your previous propositions.

Below is my pom file :

<?xml version="1.0"?>
<project
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
  xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <artifactId>sample-jaxb</artifactId>
  <dependencies>
      <dependency>
          <groupId>jakarta.xml.bind</groupId>
          <artifactId>jakarta.xml.bind-api</artifactId>
          <version>3.0.1</version>
      </dependency>
      <dependency>
          <groupId>jakarta.activation</groupId>
          <artifactId>jakarta.activation-api</artifactId>
          <version>2.0.1</version>
          <scope>runtime</scope>
      </dependency>
      <dependency>
          <groupId>org.glassfish.jaxb</groupId>
          <artifactId>jaxb-runtime</artifactId>
          <version>3.0.1</version>
      </dependency>
      <dependency>
          <groupId>org.glassfish.jaxb</groupId>
          <artifactId>jaxb-core</artifactId>
          <version>3.0.1</version>
      </dependency>
  </dependencies>
  <build>
      <plugins>
          <plugin>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>jaxb2-maven-plugin</artifactId>
                                <version>2.5.0</version>
              <dependencies>
                  <dependency>
                      <groupId>jakarta.xml.bind</groupId>
                      <artifactId>jakarta.xml.bind-api</artifactId>
                      <version>3.0.1</version>
                  </dependency>
                  <dependency>
                      <groupId>org.glassfish.jaxb</groupId>
                      <artifactId>jaxb-xjc</artifactId>
                      <version>3.0.1</version>
                  </dependency>
                  <dependency>
                      <groupId>org.glassfish.jaxb</groupId>
                      <artifactId>jaxb-jxc</artifactId>
                      <version>3.0.1</version>
                  </dependency>
                  <dependency>
                      <groupId>org.glassfish.jaxb</groupId>
                      <artifactId>jaxb-runtime</artifactId>
                      <version>3.0.1</version>
                  </dependency>
                  <dependency>
                      <groupId>org.glassfish.jaxb</groupId>
                      <artifactId>jaxb-core</artifactId>
                      <version>3.0.1</version>
                  </dependency>
                  <dependency>
                      <groupId>jakarta.activation</groupId>
                      <artifactId>jakarta.activation-api</artifactId>
                      <version>2.0.1</version>
                  </dependency>
              </dependencies>
              <executions>
                  <execution>
                      <id>xjc-sample</id>
                      <goals>
                          <goal>xjc</goal>
                      </goals>
                      <configuration>
                          <packageName>jaxb.sample</packageName>
                          <xjbSources>
                              <xjbSource>${project.build.directory}/bindings.xjb
                              </xjbSource>
                          </xjbSources>
                          <sources>
                              <source>src/test/resources/xsd/</source>
                          </sources>
                      </configuration>
                  </execution>
              </executions>
          </plugin>
      </plugins>
  </build>
</project>

And i got this error with the command mvn compile :

[INFO] --- jaxb2-maven-plugin:2.5.0:xjc (xjc-sample) @ sample-jaxb ---
[WARNING] Error injecting: org.codehaus.mojo.jaxb2.javageneration.XjcMojo
java.lang.Error: java.lang.ClassNotFoundException: com.sun.xml.bind.v2.model.core.package-info
  at org.codehaus.mojo.jaxb2.AbstractJaxbMojo.<clinit>(AbstractJaxbMojo.java:171)
  at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
  at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
  at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
  at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
  at com.google.inject.internal.DefaultConstructionProxyFactory$ReflectiveProxy.newInstance(DefaultConstructionProxyFactory.java:126)
  at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:114)
  at com.google.inject.internal.ConstructorInjector.access$000(ConstructorInjector.java:32)
  at com.google.inject.internal.ConstructorInjector$1.call(ConstructorInjector.java:98)
  at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:112)
  at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:127)
  at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66)
  at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:93)
  at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:306)
  at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1050)
  at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1086)
  at org.eclipse.sisu.space.AbstractDeferredClass.get(AbstractDeferredClass.java:48)
  at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:85)
  at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:57)
  at com.google.inject.internal.ProviderInternalFactory$1.call(ProviderInternalFactory.java:66)
  at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:112)
  at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:127)
  at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66)
  at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61)
  at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:47)
  at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1050)
  at org.eclipse.sisu.inject.Guice4$1.get(Guice4.java:162)
  at org.eclipse.sisu.inject.LazyBeanEntry.getValue(LazyBeanEntry.java:81)
  at org.eclipse.sisu.plexus.LazyPlexusBean.getValue(LazyPlexusBean.java:51)
  at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:263)
  at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:255)
  at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo(DefaultMavenPluginManager.java:520)
  at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:124)
  at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:210)
  at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156)
  at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)
  at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
  at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
  at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
  at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
  at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
  at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
  at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
  at org.apache.maven.cli.MavenCli.execute(MavenCli.java:957)
  at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:289)
  at org.apache.maven.cli.MavenCli.main(MavenCli.java:193)
  at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.base/java.lang.reflect.Method.invoke(Method.java:566)
  at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
  at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
  at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
  at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)
Caused by: java.lang.ClassNotFoundException: com.sun.xml.bind.v2.model.core.package-info
  at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
  at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
  at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247)
  at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
  at org.codehaus.mojo.jaxb2.AbstractJaxbMojo.<clinit>(AbstractJaxbMojo.java:167)
  ... 53 more
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE

Did you success to generate code with jakarta packages ?

Any help would be appreciate

You should try Version 3.0.0 of this plugin. It looks like the issue you are facing is resolved with this release.

RomainPruvostMHH commented 2 years ago

Hi @nekator, Where could I find the version 3.0.0 ? the lugin doesn't exist in Maven's repo : image

nekator commented 2 years ago

Hi @nekator, Where could I find the version 3.0.0 ? the lugin doesn't exist in Maven's repo : image

Sorry it looks like there is a github release and tag for 3.0.0 but no published version on maven central. https://github.com/mojohaus/jaxb2-maven-plugin/issues/183

Maybe you should try this fork while waiting for a 3.0.0 release.

<dependency>
  <groupId>com.evolvedbinary.maven.mojohaus</groupId>
  <artifactId>jaxb-maven-plugin</artifactId>
  <version>3.0.0</version>
</dependency>
RomainPruvostMHH commented 2 years ago

Hi, Thanks @nekator, it works well with com.evolvedbinary.maven.mojohaus:jaxb-maven-plugin:3.0.0.

FYI, below the config which works too but with org.codehaus.mojo:jaxb2-maven-plugin:2.5.0. But you need to declare the dependencies for jaxb 3. it is not ideal especially since I must also declare a dependence javax.xml.bind:jaxb-api:2.3.1

                            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>jaxb2-maven-plugin</artifactId>
                <dependencies>
                    <dependency>
                        <groupId>jakarta.xml.bind</groupId>
                        <artifactId>jakarta.xml.bind-api</artifactId>
                        <version>3.0.1</version>
                    </dependency>
                    <dependency>
                        <groupId>com.sun.xml.bind</groupId>
                        <artifactId>jaxb-xjc</artifactId>
                        <version>3.0.0</version>
                    </dependency>
                    <dependency>
                        <groupId>com.sun.xml.bind</groupId>
                        <artifactId>jaxb-jxc</artifactId>
                        <version>3.0.0</version>
                    </dependency>
                    <dependency>
                        <groupId>com.sun.xml.bind</groupId>
                        <artifactId>jaxb-impl</artifactId>
                        <version>3.0.2</version>
                    </dependency>
                    <dependency>
                        <groupId>javax.xml.bind</groupId>
                        <artifactId>jaxb-api</artifactId>
                        <version>2.3.1</version>
                    </dependency>
                </dependencies>
                <executions>
                    <execution>
                        <id>xjc-sample</id>
                        <phase>generate-test-sources</phase>
                        <goals>
                            <goal>xjc</goal>
                        </goals>
                        <configuration>
                            <packageName>jaxb.sample.codehaus250</packageName>
                            <xjbSources>
                                <xjbSource>${project.build.directory}/classes/bindings-ns-jakarta.xjb
                                </xjbSource>
                            </xjbSources>
                            <sources>
                                <source>src/test/resources/xsd/</source>
                            </sources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
Kiolali commented 2 years ago

FYI, below the config which works too but with org.codehaus.mojo:jaxb2-maven-plugin:2.5.0. But you need to declare the dependencies for jaxb 3. it is not ideal especially since I must also declare a dependence javax.xml.bind:jaxb-api:2.3.1

thanks! I get my service now running using jaxb2-maven-plugin Version 2.5.0 generating the jakarta dependencies. But now when I try to send a request, I always get ">No adapter for endpoint [public jakarta.xml.bind.JAXBElement<de.fhac.vs.gen.GetCountryRequest> de.xyz.CountryEndpoint.getCountry(jakarta.xml.bind.JAXBElement<de.xyz.gen.GetCountryRequest>)]: Is your endpoint annotated with @Endpoint, or does it implement a supported interface like MessageHandler or PayloadEndpoint?"

I think my endpoint seems correct:

@Endpoint
public class CountryEndpoint {

    private static final String NAMESPACE_URI = "http://www.baeldung.com/springsoap/gen";

    private CountryRepository countryRepository;

    @Autowired
    public CountryEndpoint(CountryRepository countryRepository) {
        this.countryRepository = countryRepository;
    }

    @PayloadRoot(namespace = NAMESPACE_URI, localPart = "getCountryRequest")
    @ResponsePayload
    public JAXBElement<GetCountryResponse> getCountry(@RequestPayload JAXBElement<GetCountryRequest> request) {
        GetCountryResponse response = new GetCountryResponse();
        response.setCountry(countryRepository.findCountry(request.getValue().getName()));
        QName qname = new QName("getCountryRequest");
        JAXBElement<GetCountryResponse> jaxbElement = new JAXBElement<GetCountryResponse>( qname, GetCountryResponse.class, response);
        return jaxbElement;
    }

}

Any idea what could be wrong?

Kiolali commented 2 years ago

maybe the problem could be, that I'm having a Spring Boot Application and Spring Boot is not yet compatible with Java EE 9 (jakarata namespaces)?!

slachiewicz commented 2 years ago

please try with version 3.1.0

johndunlap commented 2 years ago

I have the reverse problem. The plugin is generating jakarta annotations and I want the javax.xml.bind.annotation annotations. How do we control which annotations it uses in generated source code?

slachiewicz commented 2 years ago

For javax.xml.bin could you try the previous version 2.5.0?