Skip to content

Commit f9cf400

Browse files
Merge pull request #2 from openapi-tools/added-configurable-output-filename
added configurable outputFilename
2 parents bbe3210 + 69c93db commit f9cf400

File tree

5 files changed

+86
-3
lines changed

5 files changed

+86
-3
lines changed

src/main/java/io/openapitools/swagger/GenerateMojo.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,12 @@ public class GenerateMojo extends AbstractMojo {
4343
@Parameter(defaultValue = "${project.build.directory}")
4444
private File outputDirectory;
4545

46+
/**
47+
* Filename to use for the generated documentation.
48+
*/
49+
@Parameter
50+
private String outputFilename = "swagger";
51+
4652
/**
4753
* Choosing the output format. Supports JSON or YAML.
4854
*/
@@ -77,15 +83,16 @@ public void execute() throws MojoExecutionException, MojoFailureException {
7783
getLog().debug("Created output directory " + outputDirectory);
7884
}
7985

86+
8087
outputFormats.forEach(format -> {
8188
try {
82-
File outputFile = new File(outputDirectory, "swagger." + format.name().toLowerCase());
89+
File outputFile = new File(outputDirectory, outputFilename + "." + format.name().toLowerCase());
8390
format.write(swagger, outputFile);
8491
if (attachSwaggerArtifact) {
8592
projectHelper.attachArtifact(project, format.name().toLowerCase(), "swagger", outputFile);
8693
}
8794
} catch (IOException e) {
88-
throw new RuntimeException("Unable write Swagger document", e);
95+
throw new RuntimeException("Unable write " + outputFilename + " document", e);
8996
}
9097
});
9198
}

src/test/java/io/openapitools/swagger/GenerateMojoIT.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,32 @@ public void testGenerateFull() throws Exception {
7373
Mojo mojo = rule.lookupMojo("generate", new File("src/test/resources/generate-mojo-full-pom.xml"));
7474
mojo.execute();
7575

76-
File swaggerJson = new File("target/full/swagger.json");
76+
File swaggerJson = new File("target/full/open-api.json");
7777
assertTrue(swaggerJson.exists());
7878
assertTrue(swaggerJson.length() > 3000);
79+
80+
File swaggerYaml = new File("target/full/open-api.yaml");
81+
assertTrue(swaggerYaml.exists());
82+
assertTrue(swaggerYaml.length() > 3000);
83+
}
84+
85+
@Test
86+
public void testGenerateFullNoFileName() throws Exception {
87+
Path output = Paths.get("target/semifull");
88+
if (Files.exists(output)) {
89+
Files.walkFileTree(output, new DeleteVisitor());
90+
}
91+
92+
Mojo mojo = rule.lookupMojo("generate", new File("src/test/resources/generate-mojo-full-nofilename-pom.xml"));
93+
mojo.execute();
94+
95+
File swaggerJson = new File("target/semifull/swagger.json");
96+
assertTrue(swaggerJson.exists());
97+
assertTrue(swaggerJson.length() > 3000);
98+
99+
File swaggerYaml = new File("target/semifull/swagger.yaml");
100+
assertTrue(swaggerYaml.exists());
101+
assertTrue(swaggerYaml.length() > 3000);
79102
}
80103

81104

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
3+
<modelVersion>4.0.0</modelVersion>
4+
<groupId>io.openapitools.swagger.test</groupId>
5+
<artifactId>mojo-test</artifactId>
6+
<packaging>jar</packaging>
7+
<version>1.0.0-SNAPSHOT</version>
8+
<name>Swagger Generate Maven Mojo</name>
9+
10+
<dependencies>
11+
</dependencies>
12+
<build>
13+
<plugins>
14+
<plugin>
15+
<groupId>io.openapitools.swagger</groupId>
16+
<artifactId>swagger-maven-plugin</artifactId>
17+
<configuration>
18+
<swaggerConfig>
19+
<schemes>http,https</schemes>
20+
<host>services.example.it</host>
21+
<basePath>/base/path</basePath>
22+
<info>
23+
<title>Title</title>
24+
<version>1.0.0</version>
25+
<termsOfService>Terms</termsOfService>
26+
<contact>
27+
<email>[email protected]</email>
28+
<name>My Name</name>
29+
<url>https://google.com</url>
30+
</contact>
31+
<license>
32+
<url>https://license</url>
33+
<name>MIT</name>
34+
</license>
35+
</info>
36+
<descriptionFile>src/test/resources/descriptions.md</descriptionFile>
37+
</swaggerConfig>
38+
<resourcePackages>
39+
<resourcePackage>io.openapitools.swagger.example</resourcePackage>
40+
</resourcePackages>
41+
<outputFormats>
42+
<outputFormat>JSON</outputFormat>
43+
<outputFormat>YAML</outputFormat>
44+
</outputFormats>
45+
<outputDirectory>target/semifull</outputDirectory>
46+
<outputFilename></outputFilename>
47+
</configuration>
48+
</plugin>
49+
</plugins>
50+
</build>
51+
</project>

src/test/resources/generate-mojo-full-pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
<outputFormat>YAML</outputFormat>
4444
</outputFormats>
4545
<outputDirectory>target/full</outputDirectory>
46+
<outputFilename>open-api</outputFilename>
4647
</configuration>
4748
</plugin>
4849
</plugins>

src/test/resources/generate-mojo-pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
<outputFormat>YAML</outputFormat>
2424
</outputFormats>
2525
<outputDirectory>target/api</outputDirectory>
26+
<outputFilename>swagger</outputFilename>
2627
</configuration>
2728
</plugin>
2829
</plugins>

0 commit comments

Comments
 (0)