如何从Java 9模块导出所有使用cxg-codegen-plugin类生成的类?

时间:2018-08-19 19:17:01

标签: java java-9 java-10 java-module jigsaw

我有一个没有任何明确信息来源的模块。该模块包含以下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

然后如何导出此类?非常感谢你!

2 个答案:

答案 0 :(得分:2)

compile阶段comes after generate-sources,因此除非您在compile阶段之前看到错误消息(这很奇怪!) ,源已经生成。

在您遇到的情况下,这就是我要做的事情

  • 确保实际生成了源。 〜>您在mvn clean compile之后在文件系统中看到它们吗?
  • 确保该文件夹包含在要编译的源代码中。 〜>运行mvn compile -X并查找以“源根目录”开头的消息块-需要在此处提及该文件夹。 (如果不是,add it。)
  • 确保软件包名称正确,即生成的软件包名称和导出的软件包名称必须相同。

答案 1 :(得分:0)

实际上,它可以工作。我不知道我无法在没有源代码的情况下指定软件包,我认为它将以递归方式解决所有类。但这实际上没有任何意义。指定包含编译类的确切软件包确实有所帮助。希望它能对某人有所帮助!