Я отвечаю на этот вопрос, потому что я нашел ответ, и я видел, как многие люди публикуют фрагменты кода, которые показывают ту же проблему, что и я, и на самом деле примеры кода cxf демонстрируют ту же проблему. Также у меня было несколько файлов wsdlf, и как решить это тоже было не ясно.
Элемент, который устраняет эту проблему:
<wsdlLocation>AddProduct.xml</wsdlLocation>
Проблема, с моей точки зрения, заключается в том, что тег wsdlLocation предлагает путь, но это не запись для пути, вы просто помещаете имя файла wsdl здесь и во время выполнения, пока вы включаете wsdl в Путь к классу файла JAR будет найден.
В итоге раздел в pom для раздела конфигурации файла cxf-codegen-plugin выглядел так:
<configuration>
<sourceRoot>${project.build.directory}/generated-sources/cxf</sourceRoot>
<wsdlOptions>
<wsdlOption>
<wsdl>${basedir}/src/main/resources/wsdl/AddProduct.xml</wsdl>
<extraargs>
<extraarg>-client</extraarg>
</extraargs>
<wsdlLocation>AddProduct.xml</wsdlLocation>
</wsdlOption>
</wsdlOptions>
</configuration
Результатом этого является то, что в статическом объявлении вы получите следующее:
URL url = AddProductService.class.getResource("AddProduct.xml");
а не это:
url = new URL("file:/Users/tonyg/App/MyManager/src/main/resources/wsdl/AddProduct.xml");