У меня есть веб-проект Java, который использует веб-службу, используя Apache CXF для создания базового кода на основе WSDL, опубликованного службой.
У меня есть тестовая версия сервиса для разработки и рабочая версия. Конечные точки двух сервисов находятся по разным URL-адресам, и хотя их общедоступные интерфейсы в значительной степени идентичны, я регенерирую код CXF (используя плагин cxf-codegen-plugin), продвигая свой проект в производственной среде.
Как лучше всего настроить Maven для этого?
На данный момент я установил свойство в pom.xml
под названием ws_status
<properties>
<ws_status>test</ws_status>
</properties>
который я впоследствии использую для настройки пути к файлу WSDL, используемому плагином codegen:
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>${cxf.version}</version>
<configuration>
<fork>once</fork>
<encoding>UTF-8</encoding>
<additionalJvmArgs>-Djava.endorsed.dirs=${project.build.directory}/endorsed</additionalJvmArgs>
<!-- rest of the normal codegen configuration options -->
</configuration>
<dependencies>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-xjc</artifactId>
<version>2.2</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<goals>
<goal>wsdl2java</goal>
</goals>
<configuration>
<wsdlOptions>
<wsdlOption>
<wsdl>${basedir}/src/main/resources/wsdl/${ws_status}/Cmis.wsdl</wsdl>
<wsdlLocation>classpath:wsdl/${ws_status}/Cmis.wsdl</wsdlLocation>
<extraargs>
<extraarg>-client</extraarg>
<extraarg>-verbose</extraarg>
<extraarg>-compile</extraarg>
</extraargs>
</wsdlOption>
</wsdlOptions>
</configuration>
</execution>
</executions>
</plugin>
Это работает нормально, но меня раздражает, что мне нужно менять ws_status
внутри pom.xml
каждый раз, когда я выпускаю производственную версию, так как файл pom отслеживается git.
Я хочу, чтобы переключатель командной строки maven сообщал ему, что он должен ссылаться на тот или иной файл WSDL, чтобы я мог генерировать источники для тестовой или производственной среды без необходимости изменять код внутри проекта. Это «профиль сборки» в Maven?
Любые идеи? Спасибо.