Скомпилируйте сгенерированный проект maven в каталоге сгенерированных источников

Я генерирую полный проект maven (со своим собственным pom.xml) с плагином maven swagger codegen. Он выводит проект в каталог сгенерированных источников/swagger/. Однако исходные коды Java в этом каталоге компилируются с зависимостями, которые находятся в файле pom.xml моего проекта генератора, а не с созданным.

Возможна ли такая конфигурация? Я уже читал о maven antlr4 и сборке вспомогательных плагинов, но они не кажутся полезными для этой цели.


person px5x2    schedule 23.09.2016    source источник
comment
Как строится сгенерированный проект? Я не использовал swagger, но я думаю, что если вы пытаетесь создать сгенерированный проект в рамках того же вызова maven, который генерирует код, неудивительно, что используемые зависимости взяты из файла pom генератора. Однако, если фактическая сборка выполняется в отдельном вызове maven, это кажется очень странным.   -  person Joakim Z    schedule 23.09.2016
comment
На самом деле плагин maven-compiler-plugin компилирует исходники в каталоге сгенерированных источников как действие по умолчанию. Возможно, в этом случае стоит попробовать плагин maven Invoker.   -  person px5x2    schedule 23.09.2016
comment
Одним из решений, хотя и не особенно хорошим, было бы переименование зависимостей, используемых в любом из проектов, так, чтобы они были уникальными для разных проектов. Так не будет никакой путаницы. Кстати, зависимости, используемые проектами, являются внутренними? В противном случае я действительно не вижу проблемы.   -  person Joakim Z    schedule 27.09.2016


Ответы (1)


Используйте openapi-generator-maven-plugin для создания источника. Чем плагин maven-invoker-plugin для сборки и тестирования сгенерированного исходного кода.

 <plugin>
   <groupId>org.openapitools</groupId>
   <artifactId>openapi-generator-maven-plugin</artifactId>
   <version>${openapi-generator-maven-plugin.version}</version>
   <executions>
     <execution>
       <goals>
         <goal>generate</goal>
       </goals>
       <configuration>
         <inputSpec>swagger.yaml</inputSpec>
         <generatorName>java</generatorName>
         <skipValidateSpec>true</skipValidateSpec>
         <output>${project.build.directory}/generated-sources/openapi</output>
       </configuration>
     </execution>
   </executions>
 </plugin>

 <plugin>
   <artifactId>maven-invoker-plugin</artifactId>
   <version>${maven-invoker-plugin.version}</version>
   <configuration>
     <pom>${project.build.directory}/generated-sources/openapi/pom.xml</pom>
   </configuration>
   <executions>
     <execution>
       <phase>process-sources</phase>
       <goals>
         <goal>run</goal>
       </goals>
     </execution>
   </executions>
 </plugin>
person tswanson-cs    schedule 06.03.2021