Как мне экспортировать все сгенерированные с помощью cxg-codegen-plugin классы из модуля Java 9?

У меня есть модуль без явных источников. Этот модуль содержит следующую конфигурацию cxf-codegen-plugin:

    <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>
                                    ${project.build.directory}/schema/wsdl/service.wsdl
                                </wsdl>
                                <bindingFiles>
                                    <bindingFile>
                                        ${basedir}/src/main/resources/bindings.xml
                                    </bindingFile>
                                </bindingFiles>
                            </wsdlOption>
                        </wsdlOptions>
                    </configuration>
                    <goals>
                        <goal>wsdl2java</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

Так что это зависимость от сгенерированных классов. Мне нужно экспортировать все классы в другие модули Java. Допустим, мне нужно экспортировать com.company.team.app пакет. Я попытался добавить его в module-info.java, но он не компилируется, потому что говорит (что на самом деле действительно):

module-info.java:[6,20] пакет пуст или не существует: com.company.team.app

Как мне тогда экспортировать эти классы? Большое тебе спасибо!


person Dmitry Senkovich    schedule 19.08.2018    source источник
comment
Скомпилируйте module-info.java после того, как все классы будут сгенерированы.   -  person Johannes Kuhn    schedule 20.08.2018
comment
@JohannesKuhn интересная идея, у вас есть идея, как я могу этого добиться?   -  person Dmitry Senkovich    schedule 20.08.2018


Ответы (2)


compile этап следует за generate-sources, поэтому если вы не видите это сообщение об ошибке до compile фазы (это было бы странно!), источники уже созданы.

Вот что я бы сделал в вашей ситуации:

  • Убедитесь, что источники действительно созданы. ~> Вы видите их в файловой системе после mvn clean compile?
  • Убедитесь, что папка включена в исходники для компиляции. ~> Запустите mvn compile -X и обратите внимание на блок сообщений, начинающийся с «Исходные корни» - там должна быть указана папка. (Если это не так, добавьте его.)
  • Убедитесь, что имя пакета правильное, т. Е. Сгенерированные имена пакетов и имя экспортированного пакета должны быть идентичны.
person Nicolai Parlog    schedule 26.08.2018

Собственно, это работает. Я не знал, что не могу указать пакет без источников, я думал, что он рекурсивно разрешит все классы. Но на самом деле это не имеет смысла. Указание точных пакетов, содержащих скомпилированные классы, действительно помогло. Надеюсь, это кому-то поможет!

person Dmitry Senkovich    schedule 27.08.2018