По некоторым причинам org.apache.cxf:cxf-codegen-plugin
не работает внутри <pluginManagement>...</pluginManagement>
.
В моих предыдущих проектах CXF я обычно помещал его в <plugins></plugins>
.Я уже попробовал с вашим pom.xml
и заметил, что cxf-codegen-plugin
был проигнорирован завершенным, хотя он все еще виден в действующем POM.
Есть еще одна проблема с вашим исходным pom.xml
.В цели add-source
из build-helper-maven-plugin
<source>
(который будет добавлен как код Java) должен быть именно той папкой, в которой генерируется код (т. Е. <sourceRoot>
из cxf-codegen-plugin
):
<sources>
<source>${project.build.directory}/generated/cxf</source>
</sources>
Вот полный pom.xml
, который работает в моем тестовом проекте с аналогичными настройками, которые вы можете настроить в соответствии со своими потребностями.Я только что добавил опцию -verbose
, чтобы вы могли видеть некоторую информацию, когда cxf-codegen-plugin
работает.
<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>io.github.htr3n</groupId>
<artifactId>apache-cxf-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<name>apache-cxf-demo</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<cxf.version>3.2.7</cxf.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-core</artifactId>
<version>${cxf.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>3.2.4</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<sourceRoot>${project.build.directory}/generated/cxf</sourceRoot>
<wsdlOptions>
<wsdlOption>
<wsdl>${basedir}/src/main/resources/wsdl/is.wsdl</wsdl>
<defaultExcludesNamespace>true</defaultExcludesNamespace>
<extraargs>
<extraarg>-verbose</extraarg>
</extraargs>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<encoding>UTF-8</encoding>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${project.build.directory}/generated/cxf</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
Вам нужно только запустить mvn clean compile
, так как compile
включает generate-sources
.