Как запустить просто сгенерировать цель из Swagger Codegen Maven плагин - PullRequest
0 голосов
/ 28 ноября 2018

Я использую плагин Swagger Codegen Maven для создания заглушки сервера из спецификации Swagger.Если я запускаю mvn compile, то он генерирует правильно и компилирует проект.Однако иногда я хочу запустить только генерацию.

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

В данном случае мне может понадобиться при разработкеобновить спецификацию и заново сгенерировать в точках, когда проект в целом недействителен (или не будет, с новой спецификацией).Я читал, что вы можете использовать «префикс: цель».Я пробовал следующее, но ничего не работает:

mvn swagger-codegen-maven-plugin:generate
mvn swagger-codegen:generate
mvn swagger:generate
mvn codegen:generate

Это дает (например)

Не найден плагин для префикса 'codegen' в текущем проекте и в плагинегруппы [org.apache.maven.plugins, org.codehaus.mojo], доступные в репозиториях

Я также читал, что вы можете использовать "groupid: artificatid: version_goal", поэтому я попытался:

mvn io.swagger:swagger-codegen-maven-plugin:2.4.0-SNAPSHOT:generate

Это, кажется, идет дальше, но выдает ошибку

Не удалось выполнить цель io.swagger: swagger-codegen-maven-plugin: 2.4.0-SNAPSHOT: generate (default-cli) в проекте com.carus.api.base: параметры 'inputSpec', 'language' для цели io.swagger: swagger-codegen-maven-plugin: 2.4.0-SNAPSHOT: генерировать отсутствуют или недействительны

Моя структура пом немного сложна.Есть несколько API.Каждый в некотором роде свой проект.У них есть общий родительский pom с целью выполнения, а проектный pom устанавливает только определенные переменные.Переменная, используемая в качестве inputSpec, определена в pom проекта, но для языка в основном pom.(Проект .base, упомянутый здесь, фактически является базовым pom и представляет собой абстрактный пакет (<packaging>pom</packaging>). Если я указываю конкретный проект, я получаю ту же ошибку, но ссылаюсь на этот проект.

Вопросы:

  1. Могу ли я достичь цели (сгенерировать код из спецификации и скомпилировать только этот код, но не весь проект) с целью?
  2. Как узнать, что "префикс "использовать для синтаксиса" префикс: цель "?

Самое близкое, что я пришел - это запустить mvn generate-sources -Dcheckstyle.skip=true. Это генерирует, но я не думаю, что оно компилирует сгенерированные классы. Так что я тогданеобходимо очистить проект в Eclipse, чтобы запустить его перекомпиляцию.

...