Я использую плагин Maven swagger-codegen-maven-plugin
для создания клиентской банки Java. Я положил свой swagger.json
в папку src/main/resources
и запустил mvn clean install
. Вот мой pom.xml.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>my-java-client</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>my-java-client</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<swagger.version>1.5.13</swagger.version>
</properties>
<dependencies>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp</groupId>
<artifactId>okhttp</artifactId>
<version>2.7.5</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp</groupId>
<artifactId>logging-interceptor</artifactId>
<version>2.7.5</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-codegen</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>com.squareup.okio</groupId>
<artifactId>okio</artifactId>
<version>1.12.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>io.swagger</groupId>
<artifactId>swagger-codegen-maven-plugin</artifactId>
<version>2.2.2</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>src/main/resources/swagger.json</inputSpec>
<modelPackage>mypackage.model</modelPackage>
<apiPackage>mypackage</apiPackage>
<invokerPackage>mypackage.invoker</invokerPackage>
<language>java</language>
<configOptions>
<interfaceOnly>true</interfaceOnly>
<dateLibrary>java8</dateLibrary>
<java8>true</java8>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Когда я запускаю mvn clean install
, в целевой папке создается файл jar my-java-client-1.0-SNAPSHOT.jar
. В нем есть исходный код, но нет файла pom.xml. В папке target/generated-sources/swagger
есть файл pom.xml
, но он имеет groupId
и artifactId
:
<groupId>io.swagger</groupId>
<artifactId>swagger-java-client</artifactId>
Файл README.md в target/generated-sources/swagger
говорит о включении следующего в ваш pom.xml
для использования сгенерированного jar:
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-java-client</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
</dependency>
Я предполагаю, что это просто значения по умолчанию, потому что, если бы я создал несколько клиентов swagger, они бы конфликтовали из-за имени, и я вижу в исходном коде swagger-codegen, что эти поля генерируются из заполнителей, таких как {{artifactId}}
. Я не смог найти, где я могу установить эти заполнители.
Как я могу заставить jar включать pom.xml
с artifactId
и groupId
по моему выбору, чтобы я мог загрузить его в репозиторий Maven, например Artifactory, и использовать его в своих зависимостях Maven?