Это мое первое использование Maven, и я пытаюсь создать клиента из WSDL. Я создал проект Maven и загрузил файл pom.xml из аналогичного проекта, затем я запустил mvn assembly: assembly command build для создания заглушек, но компиляция не работает и генерирует ошибку.

Это мой файл pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.logicsector</groupId>
  <artifactId>weather-client</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>SOAP weather client</name>

<dependencies>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-frontend-jaxws</artifactId>
            <version>2.1.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http</artifactId>
            <version>2.1.2</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.5.2</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.5.2</version>
        </dependency>
    </dependencies>

    <build>
        <finalName>weather-client</finalName>
        <plugins>
            <!-- Generate Java classes from WSDL during build -->
            <plugin>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-codegen-plugin</artifactId>
                <version>2.1.2</version>
                <executions>
                    <execution>
                        <id>generate-sources</id>
                        <phase>generate-sources</phase>
                        <configuration>
                            <sourceRoot>${basedir}/target/generated/src/main/java</sourceRoot>
                            <wsdlOptions>
                                <wsdlOption>
                                    <wsdl>${basedir}/src/main/wsdl/weather.wsdl</wsdl>
                                    <extraargs>
                                        <extraarg>-client</extraarg>
                                    </extraargs>
                                </wsdlOption>
                            </wsdlOptions>
                        </configuration>
                        <goals>
                            <goal>wsdl2java</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- Add generated sources - avoids having to copy generated sources to build location -->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>add-source</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>add-source</goal>
                        </goals>
                        <configuration>
                            <sources>
                                <source>${basedir}/target/generated/src/main/java</source>
                            </sources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!-- Build the JAR with dependencies -->
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
            </plugin>
        </plugins>
        <!-- Build with Java 1.5 -->
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.5</source>
                        <target>1.5</target>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

</project>

И это ошибка, которую я получаю

[ИНФОРМАЦИЯ] Поиск проектов ... [ПРЕДУПРЕЖДЕНИЕ] [ПРЕДУПРЕЖДЕНИЕ] Некоторые проблемы встретились при построении эффективной модели для com.logicsector: weather-client: jar: 0.0.1-SNAPSHOT [ВНИМАНИЕ] 'build.plugins.plugin.version' для org.codehaus.mojo: build-helper-maven-plugin отсутствует. @ строка 61, столбец 21 [ВНИМАНИЕ] [ВНИМАНИЕ] Настоятельно рекомендуется исправить эти проблемы, потому что они угрожают стабильности вашей сборки. [ПРЕДУПРЕЖДЕНИЕ] [ПРЕДУПРЕЖДЕНИЕ] По этой причине будущие версии Maven могут больше не поддерживать создание таких уродливых проектов. [ВНИМАНИЕ] [ИНФОРМАЦИЯ]
[ИНФОРМАЦИЯ] -------------------------------------------------- ---------------------- [ИНФОРМАЦИЯ] Создание клиента погоды SOAP 0.0.1-SNAPSHOT [ИНФОРМАЦИЯ] -------------------------------------------------- ---------------------- [ИНФОРМАЦИЯ] [ИНФОРМАЦИЯ] >>> maven-assembly-plugin: 2.2-beta-5: сборка (default-cli) @ weather-client >>> [INFO] [INFO] --- cxf-codegen-plugin: 2.1.2: wsdl2java (generate-sources) @ weather-client --- 23 марта 2015 г. 15:11:05 org.springframework.context.support.AbstractApplicationContext prepareRefresh INFO: Обновление org.apache.cxf.bus.spring.BusApplicationContext@466d9e6c: отображаемое имя [org.apache.cxf.bus.spring.BusApplicationContext@466d9e6c]; запускать дата [Пн, 23 марта, 15:11:05 GMT + 01: 00 2015]; корень контекстной иерархии 23 марта 2015 г. 15:11:05 org.apache.cxf.bus.spring.BusApplicationContext getConfigResources ИНФОРМАЦИЯ: файл конфигурации cxf.xml не обнаружен, полагаясь на значения по умолчанию. 23 марта 2015 г. 15:11:05 org.springframework.context.support.AbstractApplicationContext getFreshBeanFactory INFO: фабрика компонентов для контекста приложения [org.apache.cxf.bus.spring.BusApplicationContext@466d9e6c]: org.springframework.beans.factory.support.DefaultListableBeanFactory@7f85e8ac 23 марта 2015 г. 15:11:06 org.springframework.context.support.AbstractApplicationContext $ BeanPostProcessorChecker postProcessAfterInitialization ИНФОРМАЦИЯ: Bean 'org.apache.cxf.bus.spring.Jsr250BeanPostProcessor' не подходит для обработки всеми BeanPostProcessors (например: not имеет право на автоматическое проксирование) 23 марта 2015 г. 15:11:06 org.springframework.context.support.AbstractApplicationContext $ BeanPostProcessorChecker postProcessAfterInitialization ИНФОРМАЦИЯ: Bean 'org.apache.cxf.bus.spring.BusExtensionPostProcessor' не подходит для обработки всеми BeanPostProcessors (например: not имеет право на автоматическое проксирование) 23 марта 2015 г. 15:11:06 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons INFO: предварительное создание экземпляров синглтонов в org.springframework.beans.factory.support.DefaultListableBeanFactory@7f85e8ac: определение бобов [cxf, org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor, org.apache.cxf.bus.spring.Jsr250BeanPostProcessor, org.apache.cxf.bus.spring.BusExtensionPostanProcessorc, orgfesource.apresource.org .apache.cxf.configuration.Configurer, org.apache.cxf.binding.BindingFactoryManager, org.apache.cxf.transport.DestinationFactoryManager, org.apache.cxf.transport.ConduitInitiatorManager, org.apache.cxf.with. .apache.cxf.phase.PhaseManager, org.apache.cxf.workqueue.WorkQueueManager, org.apache.cxf.buslifecycle.BusLifeCycleManager, org.apache.cxf.endpoint.ServerRegistry, org.apache.cxveran.endpoint. .apache.cxf.endpoint.ClientLifeCycleManager, org.apache.cxf.transports.http.QueryHandlerRegistry, org.apache.cxf.endpoint.EndpointResolverRegistry, org.apache.cxf.headers.HeaderfASCatalog.cxf. , org.apache.cxf.endpoint.ServiceContractResolverRegistry, org.apache.cxf.jaxws.context.WebServiceContextResourceResolver, org.apache.cxf.jaxw s.context.WebServiceContextImpl, org.apache.cxf.binding.soap.SoapBindingFactory, org.apache.cxf.binding.soap.SoapTransportFactory, org.apache.cxf.binding.soap.customEditorConfigurer, org.bache. xml.XMLBindingFactory, org.apache.cxf.ws.addressing.policy.AddressingAssertionBuilder, org.apache.cxf.ws.addressing.policy.AddressingPolicyInterceptorProvider, org.apache.cxf.singpolicy. cxf.transport.http.policy.HTTPClientAssertionBuilder, org.apache.cxf.transport.http.policy.HTTPServerAssertionBuilder, org.apache.cxf.transport.http.policy.NoOpPolicy. ; корень фабричной иерархии 23 марта 2015 г., 15:11:10 org.springframework.context.support.AbstractApplicationContext doClose ИНФОРМАЦИЯ: закрытие org.apache.cxf.bus.spring.BusApplicationContext@466d9e6c: отображаемое имя [org.apache.cxf.bus.spring.BusApplicationContext@466d9e6c]; запускать дата [Пн, 23 марта, 15:11:05 GMT + 01: 00 2015]; корень контекстной иерархии 23 марта 2015 г. 15:11:10 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry destroySingletons ИНФОРМАЦИЯ: Уничтожение синглтонов в org.springframework.beans.factory.support.DefaultListableBeanFactory@7f85e8ac: определение бобов [cxf, org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor, org.apache.cxf.bus.spring.Jsr250BeanPostProcessor, org.apache.cxf.bus.spring.BusExtensionPostanProcessorc, orgfesource.apresource.org .apache.cxf.configuration.Configurer, org.apache.cxf.binding.BindingFactoryManager, org.apache.cxf.transport.DestinationFactoryManager, org.apache.cxf.transport.ConduitInitiatorManager, org.apache.cxf.with. .apache.cxf.phase.PhaseManager, org.apache.cxf.workqueue.WorkQueueManager, org.apache.cxf.buslifecycle.BusLifeCycleManager, org.apache.cxf.endpoint.ServerRegistry, org.apache.cxveran.endpoint. .apache.cxf.endpoint.ClientLifeCycleManager, org.apache.cxf.transports.http.QueryHandlerRegistry, org.apache.cxf.endpoint.EndpointResolverRegistry, org.apache.cxf.headers.HeaderfASCatalog.cxf. , org.apache.cxf.endpoint.ServiceContractResolverRegistry, org.apache.cxf.jaxws.context.WebServiceContextResourceResolver, org.apache.cxf.jaxw s.context.WebServiceContextImpl, org.apache.cxf.binding.soap.SoapBindingFactory, org.apache.cxf.binding.soap.SoapTransportFactory, org.apache.cxf.binding.soap.customEditorConfigurer, org.bache. xml.XMLBindingFactory, org.apache.cxf.ws.addressing.policy.AddressingAssertionBuilder, org.apache.cxf.ws.addressing.policy.AddressingPolicyInterceptorProvider, org.apache.cxf.singpolicy. cxf.transport.http.policy.HTTPClientAssertionBuilder, org.apache.cxf.transport.http.policy.HTTPServerAssertionBuilder, org.apache.cxf.transport.http.policy.NoOpPolicy. ; корень фабричной иерархии [ИНФОРМАЦИЯ] -------------------------------------------------- ---------------------- [ИНФОРМАЦИЯ] НЕИСПРАВНОСТЬ [ИНФОРМАЦИЯ] -------------------------------------------------- ---------------------- [ИНФОРМАЦИЯ] Общее время: 9.122 сек. [ИНФОРМАЦИЯ] Окончание: Пн, 23 Мар, 15:11:10 GMT + 01: 00 2015 [INFO] Последняя память: 21M / 311M [INFO] -------------------------------------------------- ---------------------- [ОШИБКА] Не удалось выполнить цель org.apache.cxf: плагин cxf-codegen: 2.1.2: wsdl2java (источники-генерации) по проекту погодный клиент: Выполнение генерации источников цели org.apache.cxf: cxf-codegen-plugin: 2.1.2: ошибка wsdl2java: незаконно символ в непрозрачной части с индексом 2: D: \ gireveWorkSpace \ weather-client / src / main / wsdl / weather.wsdl -> [Справка 1] [ERROR] [ERROR] Чтобы увидеть полную трассировку стека ошибок, перезапустите Maven с ключом -e. [ОШИБКА] Перезапустите Maven, используя переключатель -X для включить полное ведение журнала отладки. [ERROR] [ERROR] Подробнее о об ошибках и возможных решениях читайте в следующих статьях: [ОШИБКА] [Справка 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException

Я использую Eclipse Juno, и я успешно настроил Maven, не могли бы вы помочь мне найти решение.

1
Tanboula 23 Мар 2015 в 18:00
Почему вы хотите использовать довольно старую версию CXF и версию JDK 1.5, и ваш mvn использует jdk 1.5
 – 
Karthik Prasad
23 Мар 2015 в 19:51
Привет, Картик, я использую Eclipse Juno, и он несовместим с последней версией Maven, поэтому я использую Maven 1.4, а в этой версии используется старый CXF, это то, что я думаю, но я новичок, поэтому буду благодарен за любая помощь !
 – 
Tanboula
24 Мар 2015 в 11:01
Eclipse Juno поддерживает Maven 3,
 – 
Karthik Prasad
24 Мар 2015 в 11:06
Я попытался установить Maven 1.5, но у меня возникли ошибки, после чего я поискал и нашел это stackoverflow.com/questions/25454374/…
 – 
Tanboula
24 Мар 2015 в 11:08
Это не версия maven, это версия плагина, которая поддерживает задачи maven. Плагин называется m2e,
 – 
Karthik Prasad
24 Мар 2015 в 11:18

1 ответ

Лучший ответ

Ну, вы можете использовать ниже pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.logicsector</groupId>
  <artifactId>weather-client</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>SOAP weather client</name>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <cxf.version>2.7.5</cxf.version>
        <slfj.version>1.7.5</slfj.version>
        <jdk.version>1.6</jdk.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-frontend-jaxws</artifactId>
            <version>${cxf.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http</artifactId>
            <version>${cxf.version}</version>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slfj.version}</version>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
            <version>${slfj.version}</version>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>log4j-over-slf4j</artifactId>
            <version>${slfj.version}</version>
        </dependency>
    </dependencies>

    <build>

        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.eclipse.m2e</groupId>
                    <artifactId>lifecycle-mapping</artifactId>
                    <version>1.0.0</version>
                    <configuration>
                        <lifecycleMappingMetadata>
                            <pluginExecutions>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.apache.cxf</groupId>
                                        <artifactId>cxf-codegen-plugin</artifactId>
                                        <versionRange>[2.7,)</versionRange>
                                        <goals>
                                            <goal>wsdl2java</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <execute />
                                    </action>
                                </pluginExecution>
                            </pluginExecutions>
                        </lifecycleMappingMetadata>
                    </configuration>
                </plugin>

            </plugins>
        </pluginManagement>
        <plugins>
            <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>
                            <sourceRoot>${basedir}/target/generated/src/main/java</sourceRoot>
                            <wsdlOptions>
                                <wsdlOption>
                                    <wsdl>${basedir}/src/main/resources/wsdl/weather.wsdl</wsdl>
                                    <wsdlLocation>classpath:wsdl/ServiceManagement.wsdl</wsdlLocation>
                                    <extraargs>
                                        <extraarg>-verbose</extraarg>
                                        <extraarg>-client</extraarg>
                                    </extraargs>
                                </wsdlOption>
                            </wsdlOptions>
                        </configuration>
                        <goals>
                            <goal>wsdl2java</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- Maven compiler -->
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>${jdk.version}</source>
                    <target>${jdk.version}</target>
                </configuration>
            </plugin>

        </plugins>
    </build>
</project>

Вы можете изменить версию cxf в зависимости от требований и версии jdk в теге свойств. Хотя версия, о которой вы говорите, - это плагин maven eclipse (m2e), однако eclipse поддерживает maven версии 3, и, более того, зависимости не зависят от версии maven.

Еще один момент, который стоит отметить структуру каталогов, каталог wsdl в конфигурации находится за пределами пути к классам. В maven по умолчанию src/main/java, src/main/resources - это путь к классам (это также учитывается при упаковке). Следовательно, измените конфигурацию вашего плагина cxf соответствующим образом

2
Community 6 Май 2015 в 13:00
Спасибо, Картик, я учту эти советы, когда смогу использовать Maven, но пока я даже не смог его установить! Я установил Maven 3, но не могу установить последний плагин! об этой ошибке сообщается в Maven Market marketplace.eclipse.org/content/error/report/ 2241251
 – 
Tanboula
24 Мар 2015 в 12:01
Вам не нужно устанавливать последний плагин m2e, этот плагин может быть несовместим со старой версией. Используйте сам плагин m2e версии 1.4.
 – 
Karthik Prasad
24 Мар 2015 в 12:38
1
Это то, что я сделал в первую очередь! но теперь я загружаю Eclipse Luna, чтобы использовать его
 – 
Tanboula
24 Мар 2015 в 12:40