Добавление плагина jaxb2-basics-annotate приводит к тому, что функции компоновщика больше не генерируются - PullRequest
0 голосов
/ 28 августа 2018

Я использую maven-jaxb2-plugin для генерации java-классов из службы wsdl, которую я импортировал в проект.

<plugins>
        <plugin>
            <groupId>org.jvnet.jaxb2.maven2</groupId>
            <artifactId>maven-jaxb2-plugin</artifactId>
            <executions>
                <execution>
                    <id>generate-sources</id>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                    <phase>generate-sources</phase>
                    <configuration>                    <schemaDirectory>src/main/resources</schemaDirectory>
                        <schemaLanguage>WSDL</schemaLanguage>
                        <schemaIncludes>
                            <schemaInclude>blabla.wsdl</schemaInclude>
                        </schemaIncludes>
                        <bindingIncludes>
                            <bindingInclude>bindings.xjb</bindingInclude>
                        </bindingIncludes>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>

Это работало нормально, и для каждого объекта создавались функции компоновщика. Итак, основные функции .withParameter (Param param), которые устанавливают значение и возвращают себя.

К сожалению, аннотация XmlRootElement не была добавлена ​​к основному запросу и объектам ответа. Я узнал, что вы можете добавить это, добавив плагин jasb2-basics-annotate и добавив аргумент -Xannotate в pom.

Результат:

<plugins>
        <plugin>
            <groupId>org.jvnet.jaxb2.maven2</groupId>
            <artifactId>maven-jaxb2-plugin</artifactId>
            <executions>
                <execution>
                    <id>generate-sources</id>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                    <phase>generate-sources</phase>
                    <configuration>
                        <args>
                            <arg>-Xannotate</arg>
                        </args>
                        <plugins>
                            <plugin>                                    <groupId>org.jvnet.jaxb2_commons</groupId>
                                <artifactId>jaxb2-basics-annotate</artifactId>
                                <version>0.6.0</version>
                            </plugin>
                        </plugins>
                        <schemaDirectory>src/main/resources</schemaDirectory>
                        <schemaLanguage>WSDL</schemaLanguage>
                        <schemaIncludes>
                            <schemaInclude>blabla.wsdl</schemaInclude>
                        </schemaIncludes>
                        <bindingIncludes>
                            <bindingInclude>bindings.xjb</bindingInclude>
                        </bindingIncludes>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>

Это прекрасно работает для нужных мне аннотаций @XmlRootElement. К сожалению, функции компоновщика больше не генерируются. Теперь объекты имеют только геттеры и сеттеры.

Кто-нибудь знает, что вызывает это, и если есть способ заставить его генерировать эти функции снова?

1 Ответ

0 голосов
/ 28 августа 2018

Вы можете добавить еще один плагин сразу после jaxb2-basics-annotate для создания компоновщиков, а именно:

        <plugin>
            <groupId>net.java.dev.jaxb2-commons</groupId>
            <artifactId>jaxb-fluent-api</artifactId>
            <version>2.1.8</version>
        </plugin>

Вы также должны включить следующие аргументы:

         <args>
            <arg>-Xannotate</arg>
            <arg>-Xfluent-api</arg>
         </args>

Пожалуйста, также проверьте, что плагин fluent-api еще не был добавлен в другой части конфигурации (вероятно, pluginManagement в одном из иерархических родителей pom), поскольку проблема может заключаться в том, что вы просто переопределили Аргументы из pluginManagement в plugins , и поэтому он перестал работать.

...