Cxf-codegen-plugin не генерирует источники

Я пытаюсь заставить cxf-codegen-plugin генерировать источники из моего wsdl файла. При вызове wsdl2java вручную генерируются нужные классы, но при использовании mvn generate-sources ничего не происходит, и я получаю сообщение "Нет целей, необходимых для проекта". Вызов плагина напрямую не помогает.

Из моих попов следует выдержка:

<plugin>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-codegen-plugin</artifactId>
    <version>2.5.2</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/MyServiceInterface.wsdl</wsdl>
                    </wsdlOption>
                </wsdlOptions>
            </configuration>
            <goals>
                <goal>wsdl2java</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Ответы

Ответ 1

Это очень похоже на то, как я (успешно) настраиваю этот плагин в одном из моих проектов; Я бы ожидал, что это сработает. (Я считаю, что вы можете опустить <sourceRoot>, по умолчанию это тот, который вы указали.)

Единственное, о чем я могу думать, это если бы вы включили эту конфигурацию плагина в неактивный профиль Maven или (скорее) в разделе <pluginManagement> вместо прямого <plugins>; раздел pluginManagement переопределяет аспекты конфигурации плагинов, но фактически не позволяет им использовать их. (Однако это влияет на явное использование, я знаю, что вы не хотите этого делать.)

Ответ 2

В моем случае, по крайней мере, я думал, что он не генерирует исходный код, но на самом деле это было. Проблема заключалась в том, что папка target/generated/cxf была назначена Eclipse в качестве исходной папки, которую я не делал вручную. Таким образом, источник находился в верхней части моего проекта, в структуре пакета, а не в структуре папок ниже, где я смотрел и ожидал, что это будет.

Ответ 3

В моем случае, если у меня был старый целевой каталог (определенный в <sourceRoot>/path/to/target</sourceRoot>), ничего не генерировалось. Только после удаления целевой папки вручную плагин фактически начал генерировать источники.