Указание имени пакета при использовании Maven для генерации Java из WSDL - PullRequest
11 голосов
/ 21 марта 2012

Я использую скрипт maven для генерации кода Java, который мне нужен для связи со службой WCF.Я установил связь и готов интегрировать мой сценарий maven и генерируемый им код с остальной частью кода Java из проекта.

Однако я не могу заставить maven сгенерировать код с помощьюправильное имя пакета я хочу.Из того, что я прочитал в Интернете, я должен использовать тег, и я видел два возможных места, где это происходит.Я включил фрагмент сценария, я думаю, что они должны войти, и оба они там.Однако эти теги ни на что не влияют, и код генерируется так же, как и без них

        <plugin>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-codegen-plugin</artifactId>
            <version>${cxf.version}</version>
            <configuration>
                        <packageName>com.name.server.cxf</packageName>                      
                    <sourceRoot>src/com/server/cxf</sourceRoot>
                        <wsdlOptions>
                            <wsdlOption>
                                <wsdl>src/com/server/cxf/code-generation/service.xml</wsdl>
                                <bindingFiles>
                                    <bindingFile>src/com/server/cxf/code-generation/javabindings.xml</bindingFile>
                                </bindingFiles> 
                                <extraargs>
                                    <extraarg>-validate</extraarg>
                                    <extraarg>-client</extraarg>
                                    <extraarg>-verbose</extraarg>
                                    <extraarg>-xjc-verbose</extraarg>
                                </extraargs>
                            </wsdlOption>
                        </wsdlOptions>
                        <verbose />
                    </configuration>
            <executions>
                <execution>
                    <id>generate-sources</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>wsdl2java</goal>
                    </goals>
                    <configuration>
                        <packageName>com.name.server.cxf</packageName>      
                    </configuration>
                </execution>
            </executions>
        </plugin>

Возможно, я использую неправильный тег или, возможно, он находится не в том месте?

Ответы [ 3 ]

18 голосов
/ 21 марта 2012

Добавьте <extraarg>-p</extraarg><extraarg>com.name.server.cxf</extraarg> в раздел <extraargs> внутри тега <wsdlOption>.Следующая (немного другая версия) работает для меня.

       <plugin>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-codegen-plugin</artifactId>
            <version>${cxf.version}</version>
            <executions>
                <execution>
                    <id>generate-sources</id>
                    <phase>generate-sources</phase>
                    <configuration>
                        <wsdlOptions>
                            <wsdlOption>
                                <wsdl>src/com/server/cxf/code-generation/service.xml</wsdl>
                                <bindingFiles>
                                    <bindingFile>src/com/server/cxf/code-generation/javabindings.xml</bindingFile>
                                </bindingFiles>
                                <extraargs>
                                    <extraarg>-validate</extraarg>
                                    <extraarg>-client</extraarg>
                                    <extraarg>-verbose</extraarg>
                                    <extraarg>-xjc-verbose</extraarg>
                                    <extraarg>-p</extraarg>
                                    <extraarg>com.name.server.cxf</extraarg>
                                </extraargs>
                            </wsdlOption>
                        </wsdlOptions>
                    </configuration>
                    <goals>
                        <goal>wsdl2java</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

В качестве альтернативы, создайте файл service-options в src/com/server/cxf/code-generation/ с содержанием -p com.name.server.cxf

1 голос
/ 13 августа 2015

Это очень хорошо работает для меня:

<wsdlOption>
                                <wsdl>src/main/resources/wsdl/my_wsdl.wsdl</wsdl>
                                <extraargs>
                                    <extraarg>-p</extraarg>
                                    <extraarg>http://services.demo.es/=com.my.package.demo1</extraarg>
                                    <extraarg>-p</extraarg>
                                    <extraarg>http://tempuri.org/=com.my.package.demo2</extraarg>
                                    <extraarg>-exsh</extraarg>
                                    <extraarg>true</extraarg>
                                    <extraarg>-client</extraarg>
                                    <extraarg>-wsdlLocation</extraarg>
                                    <extraarg></extraarg>
                                </extraargs>
                            </wsdlOption>
0 голосов
/ 14 августа 2017

Приведенное выше решение с

<extraarg>-p</extraarg>
<extraarg>com.name.server.cxf</extraarg>

Изменяет имя пакета сгенерированного источника в одном пакете, из-за чего классы ObjectFactory переопределяются. Мне нужен пакетструктура как бы основанная на wsld.Вместе с пакетом дополнений.

пример java-классов генерируется как com.service.name.mypackage.a, com.service.name.mypackage.b, com.service.name.mypackage.c

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...