Skip to content

Add packageName configuration to maven - #2429

Merged
jimschubert merged 1 commit into
OpenAPITools:masterfrom
Zomzog:2428
Apr 1, 2019
Merged

Add packageName configuration to maven#2429
jimschubert merged 1 commit into
OpenAPITools:masterfrom
Zomzog:2428

Conversation

@Zomzog

@ZomzogZomzog commented Mar 16, 2019

Copy link
Copy Markdown
Contributor

PR checklist

  • Read the contribution guidelines.
  • Ran the shell script under ./bin/ to update Petstore sample so that CIs can verify the change. (For instance, only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh, ./bin/security/{LANG}-petstore.sh and ./bin/openapi3/security/{LANG}-petstore.sh if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in .\bin\windows\.
  • Filed the PR against the correct branch: master, 3.4.x, 4.0.x. Default: master.
  • Copied the technical committee to review the pull request if your PR is targeting a particular programming language.

Description of the PR

Add packageName configuration to maven for Kotlin client generation.

Must fix#2428

@jimschubert@dr4ke616

@jimschubert

Copy link
Copy Markdown
Member

Thanks for the PR. I've skimmed it and it looks good. I'll need to look into unrelated CI failures before merge.

@wing328

Copy link
Copy Markdown
Member

@jimschubert I've left a comment in #2428 (comment).

If that works, I think we can skip this PR.

@jimschubert

Copy link
Copy Markdown
Member

@wing328 Having read that linked issue, I still agree with the approach in this PR. I think we'll also want to add packageName as a global option, as I don't think the concern applies only to Kotlin.

Looking at the top-level generators options:

openapi-generator-cli generate
[(-a <authorization> | --auth <authorization>)]
[--additional-properties <additional properties>...]
[--api-package <api package>] [--artifact-id <artifact id>]
[--artifact-version <artifact version>]
[(-c <configuration file> | --config <configuration file>)]
[-D <system properties>...]
[(-g <generator name> | --generator-name <generator name>)]
[--git-repo-id <git repo id>] [--git-user-id <git user id>]
[--group-id <group id>] [--http-user-agent <http user agent>]
(-i <spec file> | --input-spec <spec file>)
[--ignore-file-override <ignore file override location>]
[--import-mappings <import mappings>...]
[--instantiation-types <instantiation types>...]
[--invoker-package <invoker package>]
[--language-specific-primitives <language specific primitives>...]
[--library <library>] [--log-to-stderr]
[--model-name-prefix <model name prefix>]
[--model-name-suffix <model name suffix>]
[--model-package <model package>]
[(-o <output directory> | --output <output directory>)]
[--release-note <release note>] [--remove-operation-id-prefix]
[--reserved-words-mappings <reserved word mappings>...]
[(-s | --skip-overwrite)] [--skip-validate-spec]
[(-t <template directory> | --template-dir <template directory>)]
[--type-mappings <type mappings>...]

We have invoker, model, and api packages which can be passed as global configurations. From a user's perspective it would be weird to pass a base package name in a different manner.

I don't believe all generators handle those package options in the same way, so I feel like options for consistency would be to either move model/api/invoker package configuration out of globals or to add packageName to globals. Like the globals that exist today, users can still apply the settings via additionalProperties.

If we do go with this approach, we'll want to also add to the Gradle plugin.

@jimschubertjimschubert self-assigned this Mar 26, 2019
@Zomzog

Copy link
Copy Markdown
ContributorAuthor

So what is your preferred choice?

@jimschubert

Copy link
Copy Markdown
Member

I raised the question with the core team, and was waiting for a response.

For reference, I tested this locally with two maven files:

go-gin-addl.xml

<projectxmlns="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>org.openapitools</groupId>
<artifactId>go-gin-addl-project</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>sample-project</name>
<url>http://maven.apache.org</url>
<build>
<plugins>
<!-- activate the plugin -->
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>4.0.0-SNAPSHOT</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<!-- specify the swagger yaml -->
<inputSpec>${project.basedir}/swagger.yaml</inputSpec>
<generatorName>go-gin-server</generatorName>
<output>${project.build.directory}/generated-sources/addl</output>
<additionalProperties>
<additionalProperty>packageName=jimschubert</additionalProperty>
</additionalProperties>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
  • build with mvn -f go-gin-addl.xml compile
  • inspect target/generated-sources/addl/go/api_pet.go
  • packageName is set as expected

go-gin-global.xml

<projectxmlns="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>org.openapitools</groupId>
<artifactId>go-gin-global-project</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>sample-project</name>
<url>http://maven.apache.org</url>
<build>
<plugins>
<!-- activate the plugin -->
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>4.0.0-SNAPSHOT</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<!-- specify the swagger yaml -->
<inputSpec>${project.basedir}/swagger.yaml</inputSpec>
<generatorName>go-gin-server</generatorName>
<output>${project.build.directory}/generated-sources/global</output>
<packageName>jimschubert</packageName>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
  • build with mvn -f go-gin-global.xml compile
  • inspect target/generated-sources/global/go/api_pet.go
  • packageName is set as expected

To address the concern about global options not being used by all generators, I've opened #2556 for further discussion.

I'll go ahead and merge this, then make any additional changes to the CLI and Gradle Plugin.

@jimschubertjimschubert added this to the 4.0.0 milestone Apr 1, 2019
@jimschubert
jimschubert merged commit 9c7d407 into OpenAPITools:masterApr 1, 2019
jimschubert added a commit that referenced this pull request Apr 2, 2019
* master: (133 commits)
#2503: fix out-of-memory issue with nested objects with arrays with maxItems set by limiting to max. 5 example items (#2536)
remove emitDefaultValue option (#2559)
fix EmitDefaultValue default vallue with false (#2558)
Added API Key auth to rust-server (#2459)
remove initialCaps and replace with camelize (#2546)
Add packageName configuration to maven (#2429)
[Typescript AngularJS] fix Extra package prefix in api parameters operations (#2522)
#1023 - [Scala] Use status family during response processing (#1024)
Generate setters for readonly properties in server code (#1582)
[JS] fix NPE for null string and improve Travis config file (#2553)
[elm] Update ISO 8601 library (fixes missing time zone designator) (#2545)
[csharp] update sample after #2528 (#2550)
[JavaScript] fix index.js, ApiClient.js and test files generated to incorrect location (#2511)
Aspnetcore nullable support (#2529)
Csharp nullable support (#2528)
[C++] [Qt5] Add enum support for client and server (#2339)
Fixed typo in migration-from-swagger-codegen.md (#2548)
[TypeScript Client] fix install Aurelia + fix use deprecated function (#2514)
[KOTLIN] fix var name not correctly sanitized (#2537)
Update swagger-parser to '2.0.11-OpenAPITools.org-1' (#2262)
...
@q3769-patientpoint

Copy link
Copy Markdown

I just tried 7.8.0 for Java code gen (Native). The pacakgeName has no effect in or outside configOptions element. Only way to change the base package is using apiPackage/modelPackage/invokerPackage elements inside the configOptions element.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] packageName ignored by maven plugin

4 participants

@Zomzog@jimschubert@wing328@q3769-patientpoint
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Add packageName configuration to maven by Zomzog · Pull Request #2429 · OpenAPITools/openapi-generator · GitHub
Skip to content

Add packageName configuration to maven - #2429

Merged
jimschubert merged 1 commit into
OpenAPITools:masterfrom
Zomzog:2428
Apr 1, 2019
Merged

Add packageName configuration to maven#2429
jimschubert merged 1 commit into
OpenAPITools:masterfrom
Zomzog:2428

Conversation

@Zomzog

@ZomzogZomzog commented Mar 16, 2019

Copy link
Copy Markdown
Contributor

PR checklist

  • Read the contribution guidelines.
  • Ran the shell script under ./bin/ to update Petstore sample so that CIs can verify the change. (For instance, only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh, ./bin/security/{LANG}-petstore.sh and ./bin/openapi3/security/{LANG}-petstore.sh if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in .\bin\windows\.
  • Filed the PR against the correct branch: master, 3.4.x, 4.0.x. Default: master.
  • Copied the technical committee to review the pull request if your PR is targeting a particular programming language.

Description of the PR

Add packageName configuration to maven for Kotlin client generation.

Must fix#2428

@jimschubert@dr4ke616

@jimschubert

Copy link
Copy Markdown
Member

Thanks for the PR. I've skimmed it and it looks good. I'll need to look into unrelated CI failures before merge.

@wing328

Copy link
Copy Markdown
Member

@jimschubert I've left a comment in #2428 (comment).

If that works, I think we can skip this PR.

@jimschubert

Copy link
Copy Markdown
Member

@wing328 Having read that linked issue, I still agree with the approach in this PR. I think we'll also want to add packageName as a global option, as I don't think the concern applies only to Kotlin.

Looking at the top-level generators options:

openapi-generator-cli generate
[(-a <authorization> | --auth <authorization>)]
[--additional-properties <additional properties>...]
[--api-package <api package>] [--artifact-id <artifact id>]
[--artifact-version <artifact version>]
[(-c <configuration file> | --config <configuration file>)]
[-D <system properties>...]
[(-g <generator name> | --generator-name <generator name>)]
[--git-repo-id <git repo id>] [--git-user-id <git user id>]
[--group-id <group id>] [--http-user-agent <http user agent>]
(-i <spec file> | --input-spec <spec file>)
[--ignore-file-override <ignore file override location>]
[--import-mappings <import mappings>...]
[--instantiation-types <instantiation types>...]
[--invoker-package <invoker package>]
[--language-specific-primitives <language specific primitives>...]
[--library <library>] [--log-to-stderr]
[--model-name-prefix <model name prefix>]
[--model-name-suffix <model name suffix>]
[--model-package <model package>]
[(-o <output directory> | --output <output directory>)]
[--release-note <release note>] [--remove-operation-id-prefix]
[--reserved-words-mappings <reserved word mappings>...]
[(-s | --skip-overwrite)] [--skip-validate-spec]
[(-t <template directory> | --template-dir <template directory>)]
[--type-mappings <type mappings>...]

We have invoker, model, and api packages which can be passed as global configurations. From a user's perspective it would be weird to pass a base package name in a different manner.

I don't believe all generators handle those package options in the same way, so I feel like options for consistency would be to either move model/api/invoker package configuration out of globals or to add packageName to globals. Like the globals that exist today, users can still apply the settings via additionalProperties.

If we do go with this approach, we'll want to also add to the Gradle plugin.

@jimschubertjimschubert self-assigned this Mar 26, 2019
@Zomzog

Copy link
Copy Markdown
ContributorAuthor

So what is your preferred choice?

@jimschubert

Copy link
Copy Markdown
Member

I raised the question with the core team, and was waiting for a response.

For reference, I tested this locally with two maven files:

go-gin-addl.xml

<projectxmlns="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>org.openapitools</groupId>
<artifactId>go-gin-addl-project</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>sample-project</name>
<url>http://maven.apache.org</url>
<build>
<plugins>
<!-- activate the plugin -->
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>4.0.0-SNAPSHOT</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<!-- specify the swagger yaml -->
<inputSpec>${project.basedir}/swagger.yaml</inputSpec>
<generatorName>go-gin-server</generatorName>
<output>${project.build.directory}/generated-sources/addl</output>
<additionalProperties>
<additionalProperty>packageName=jimschubert</additionalProperty>
</additionalProperties>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
  • build with mvn -f go-gin-addl.xml compile
  • inspect target/generated-sources/addl/go/api_pet.go
  • packageName is set as expected

go-gin-global.xml

<projectxmlns="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>org.openapitools</groupId>
<artifactId>go-gin-global-project</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>sample-project</name>
<url>http://maven.apache.org</url>
<build>
<plugins>
<!-- activate the plugin -->
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>4.0.0-SNAPSHOT</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<!-- specify the swagger yaml -->
<inputSpec>${project.basedir}/swagger.yaml</inputSpec>
<generatorName>go-gin-server</generatorName>
<output>${project.build.directory}/generated-sources/global</output>
<packageName>jimschubert</packageName>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
  • build with mvn -f go-gin-global.xml compile
  • inspect target/generated-sources/global/go/api_pet.go
  • packageName is set as expected

To address the concern about global options not being used by all generators, I've opened #2556 for further discussion.

I'll go ahead and merge this, then make any additional changes to the CLI and Gradle Plugin.

@jimschubertjimschubert added this to the 4.0.0 milestone Apr 1, 2019
@jimschubert
jimschubert merged commit 9c7d407 into OpenAPITools:masterApr 1, 2019
jimschubert added a commit that referenced this pull request Apr 2, 2019
* master: (133 commits)
#2503: fix out-of-memory issue with nested objects with arrays with maxItems set by limiting to max. 5 example items (#2536)
remove emitDefaultValue option (#2559)
fix EmitDefaultValue default vallue with false (#2558)
Added API Key auth to rust-server (#2459)
remove initialCaps and replace with camelize (#2546)
Add packageName configuration to maven (#2429)
[Typescript AngularJS] fix Extra package prefix in api parameters operations (#2522)
#1023 - [Scala] Use status family during response processing (#1024)
Generate setters for readonly properties in server code (#1582)
[JS] fix NPE for null string and improve Travis config file (#2553)
[elm] Update ISO 8601 library (fixes missing time zone designator) (#2545)
[csharp] update sample after #2528 (#2550)
[JavaScript] fix index.js, ApiClient.js and test files generated to incorrect location (#2511)
Aspnetcore nullable support (#2529)
Csharp nullable support (#2528)
[C++] [Qt5] Add enum support for client and server (#2339)
Fixed typo in migration-from-swagger-codegen.md (#2548)
[TypeScript Client] fix install Aurelia + fix use deprecated function (#2514)
[KOTLIN] fix var name not correctly sanitized (#2537)
Update swagger-parser to '2.0.11-OpenAPITools.org-1' (#2262)
...
@q3769-patientpoint

Copy link
Copy Markdown

I just tried 7.8.0 for Java code gen (Native). The pacakgeName has no effect in or outside configOptions element. Only way to change the base package is using apiPackage/modelPackage/invokerPackage elements inside the configOptions element.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] packageName ignored by maven plugin

4 participants

@Zomzog@jimschubert@wing328@q3769-patientpoint
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add packageName configuration to maven by Zomzog · Pull Request #2429 · OpenAPITools/openapi-generator · GitHub
Skip to content

Add packageName configuration to maven - #2429

Merged
jimschubert merged 1 commit into
OpenAPITools:masterfrom
Zomzog:2428
Apr 1, 2019
Merged

Add packageName configuration to maven#2429
jimschubert merged 1 commit into
OpenAPITools:masterfrom
Zomzog:2428

Conversation

@Zomzog

@ZomzogZomzog commented Mar 16, 2019

Copy link
Copy Markdown
Contributor

PR checklist

  • Read the contribution guidelines.
  • Ran the shell script under ./bin/ to update Petstore sample so that CIs can verify the change. (For instance, only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh, ./bin/security/{LANG}-petstore.sh and ./bin/openapi3/security/{LANG}-petstore.sh if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in .\bin\windows\.
  • Filed the PR against the correct branch: master, 3.4.x, 4.0.x. Default: master.
  • Copied the technical committee to review the pull request if your PR is targeting a particular programming language.

Description of the PR

Add packageName configuration to maven for Kotlin client generation.

Must fix#2428

@jimschubert@dr4ke616

@jimschubert

Copy link
Copy Markdown
Member

Thanks for the PR. I've skimmed it and it looks good. I'll need to look into unrelated CI failures before merge.

@wing328

Copy link
Copy Markdown
Member

@jimschubert I've left a comment in #2428 (comment).

If that works, I think we can skip this PR.

@jimschubert

Copy link
Copy Markdown
Member

@wing328 Having read that linked issue, I still agree with the approach in this PR. I think we'll also want to add packageName as a global option, as I don't think the concern applies only to Kotlin.

Looking at the top-level generators options:

openapi-generator-cli generate
[(-a <authorization> | --auth <authorization>)]
[--additional-properties <additional properties>...]
[--api-package <api package>] [--artifact-id <artifact id>]
[--artifact-version <artifact version>]
[(-c <configuration file> | --config <configuration file>)]
[-D <system properties>...]
[(-g <generator name> | --generator-name <generator name>)]
[--git-repo-id <git repo id>] [--git-user-id <git user id>]
[--group-id <group id>] [--http-user-agent <http user agent>]
(-i <spec file> | --input-spec <spec file>)
[--ignore-file-override <ignore file override location>]
[--import-mappings <import mappings>...]
[--instantiation-types <instantiation types>...]
[--invoker-package <invoker package>]
[--language-specific-primitives <language specific primitives>...]
[--library <library>] [--log-to-stderr]
[--model-name-prefix <model name prefix>]
[--model-name-suffix <model name suffix>]
[--model-package <model package>]
[(-o <output directory> | --output <output directory>)]
[--release-note <release note>] [--remove-operation-id-prefix]
[--reserved-words-mappings <reserved word mappings>...]
[(-s | --skip-overwrite)] [--skip-validate-spec]
[(-t <template directory> | --template-dir <template directory>)]
[--type-mappings <type mappings>...]

We have invoker, model, and api packages which can be passed as global configurations. From a user's perspective it would be weird to pass a base package name in a different manner.

I don't believe all generators handle those package options in the same way, so I feel like options for consistency would be to either move model/api/invoker package configuration out of globals or to add packageName to globals. Like the globals that exist today, users can still apply the settings via additionalProperties.

If we do go with this approach, we'll want to also add to the Gradle plugin.

@jimschubertjimschubert self-assigned this Mar 26, 2019
@Zomzog

Copy link
Copy Markdown
ContributorAuthor

So what is your preferred choice?

@jimschubert

Copy link
Copy Markdown
Member

I raised the question with the core team, and was waiting for a response.

For reference, I tested this locally with two maven files:

go-gin-addl.xml

<projectxmlns="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>org.openapitools</groupId>
<artifactId>go-gin-addl-project</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>sample-project</name>
<url>http://maven.apache.org</url>
<build>
<plugins>
<!-- activate the plugin -->
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>4.0.0-SNAPSHOT</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<!-- specify the swagger yaml -->
<inputSpec>${project.basedir}/swagger.yaml</inputSpec>
<generatorName>go-gin-server</generatorName>
<output>${project.build.directory}/generated-sources/addl</output>
<additionalProperties>
<additionalProperty>packageName=jimschubert</additionalProperty>
</additionalProperties>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
  • build with mvn -f go-gin-addl.xml compile
  • inspect target/generated-sources/addl/go/api_pet.go
  • packageName is set as expected

go-gin-global.xml

<projectxmlns="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>org.openapitools</groupId>
<artifactId>go-gin-global-project</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>sample-project</name>
<url>http://maven.apache.org</url>
<build>
<plugins>
<!-- activate the plugin -->
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>4.0.0-SNAPSHOT</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<!-- specify the swagger yaml -->
<inputSpec>${project.basedir}/swagger.yaml</inputSpec>
<generatorName>go-gin-server</generatorName>
<output>${project.build.directory}/generated-sources/global</output>
<packageName>jimschubert</packageName>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
  • build with mvn -f go-gin-global.xml compile
  • inspect target/generated-sources/global/go/api_pet.go
  • packageName is set as expected

To address the concern about global options not being used by all generators, I've opened #2556 for further discussion.

I'll go ahead and merge this, then make any additional changes to the CLI and Gradle Plugin.

@jimschubertjimschubert added this to the 4.0.0 milestone Apr 1, 2019
@jimschubert
jimschubert merged commit 9c7d407 into OpenAPITools:masterApr 1, 2019
jimschubert added a commit that referenced this pull request Apr 2, 2019
* master: (133 commits)
#2503: fix out-of-memory issue with nested objects with arrays with maxItems set by limiting to max. 5 example items (#2536)
remove emitDefaultValue option (#2559)
fix EmitDefaultValue default vallue with false (#2558)
Added API Key auth to rust-server (#2459)
remove initialCaps and replace with camelize (#2546)
Add packageName configuration to maven (#2429)
[Typescript AngularJS] fix Extra package prefix in api parameters operations (#2522)
#1023 - [Scala] Use status family during response processing (#1024)
Generate setters for readonly properties in server code (#1582)
[JS] fix NPE for null string and improve Travis config file (#2553)
[elm] Update ISO 8601 library (fixes missing time zone designator) (#2545)
[csharp] update sample after #2528 (#2550)
[JavaScript] fix index.js, ApiClient.js and test files generated to incorrect location (#2511)
Aspnetcore nullable support (#2529)
Csharp nullable support (#2528)
[C++] [Qt5] Add enum support for client and server (#2339)
Fixed typo in migration-from-swagger-codegen.md (#2548)
[TypeScript Client] fix install Aurelia + fix use deprecated function (#2514)
[KOTLIN] fix var name not correctly sanitized (#2537)
Update swagger-parser to '2.0.11-OpenAPITools.org-1' (#2262)
...
@q3769-patientpoint

Copy link
Copy Markdown

I just tried 7.8.0 for Java code gen (Native). The pacakgeName has no effect in or outside configOptions element. Only way to change the base package is using apiPackage/modelPackage/invokerPackage elements inside the configOptions element.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] packageName ignored by maven plugin

4 participants

@Zomzog@jimschubert@wing328@q3769-patientpoint
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add packageName configuration to maven by Zomzog · Pull Request #2429 · OpenAPITools/openapi-generator · GitHub
Skip to content

Add packageName configuration to maven - #2429

Merged
jimschubert merged 1 commit into
OpenAPITools:masterfrom
Zomzog:2428
Apr 1, 2019
Merged

Add packageName configuration to maven#2429
jimschubert merged 1 commit into
OpenAPITools:masterfrom
Zomzog:2428

Conversation

@Zomzog

@ZomzogZomzog commented Mar 16, 2019

Copy link
Copy Markdown
Contributor

PR checklist

  • Read the contribution guidelines.
  • Ran the shell script under ./bin/ to update Petstore sample so that CIs can verify the change. (For instance, only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh, ./bin/security/{LANG}-petstore.sh and ./bin/openapi3/security/{LANG}-petstore.sh if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in .\bin\windows\.
  • Filed the PR against the correct branch: master, 3.4.x, 4.0.x. Default: master.
  • Copied the technical committee to review the pull request if your PR is targeting a particular programming language.

Description of the PR

Add packageName configuration to maven for Kotlin client generation.

Must fix#2428

@jimschubert@dr4ke616

@jimschubert

Copy link
Copy Markdown
Member

Thanks for the PR. I've skimmed it and it looks good. I'll need to look into unrelated CI failures before merge.

@wing328

Copy link
Copy Markdown
Member

@jimschubert I've left a comment in #2428 (comment).

If that works, I think we can skip this PR.

@jimschubert

Copy link
Copy Markdown
Member

@wing328 Having read that linked issue, I still agree with the approach in this PR. I think we'll also want to add packageName as a global option, as I don't think the concern applies only to Kotlin.

Looking at the top-level generators options:

openapi-generator-cli generate
[(-a <authorization> | --auth <authorization>)]
[--additional-properties <additional properties>...]
[--api-package <api package>] [--artifact-id <artifact id>]
[--artifact-version <artifact version>]
[(-c <configuration file> | --config <configuration file>)]
[-D <system properties>...]
[(-g <generator name> | --generator-name <generator name>)]
[--git-repo-id <git repo id>] [--git-user-id <git user id>]
[--group-id <group id>] [--http-user-agent <http user agent>]
(-i <spec file> | --input-spec <spec file>)
[--ignore-file-override <ignore file override location>]
[--import-mappings <import mappings>...]
[--instantiation-types <instantiation types>...]
[--invoker-package <invoker package>]
[--language-specific-primitives <language specific primitives>...]
[--library <library>] [--log-to-stderr]
[--model-name-prefix <model name prefix>]
[--model-name-suffix <model name suffix>]
[--model-package <model package>]
[(-o <output directory> | --output <output directory>)]
[--release-note <release note>] [--remove-operation-id-prefix]
[--reserved-words-mappings <reserved word mappings>...]
[(-s | --skip-overwrite)] [--skip-validate-spec]
[(-t <template directory> | --template-dir <template directory>)]
[--type-mappings <type mappings>...]

We have invoker, model, and api packages which can be passed as global configurations. From a user's perspective it would be weird to pass a base package name in a different manner.

I don't believe all generators handle those package options in the same way, so I feel like options for consistency would be to either move model/api/invoker package configuration out of globals or to add packageName to globals. Like the globals that exist today, users can still apply the settings via additionalProperties.

If we do go with this approach, we'll want to also add to the Gradle plugin.

@jimschubertjimschubert self-assigned this Mar 26, 2019
@Zomzog

Copy link
Copy Markdown
ContributorAuthor

So what is your preferred choice?

@jimschubert

Copy link
Copy Markdown
Member

I raised the question with the core team, and was waiting for a response.

For reference, I tested this locally with two maven files:

go-gin-addl.xml

<projectxmlns="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>org.openapitools</groupId>
<artifactId>go-gin-addl-project</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>sample-project</name>
<url>http://maven.apache.org</url>
<build>
<plugins>
<!-- activate the plugin -->
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>4.0.0-SNAPSHOT</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<!-- specify the swagger yaml -->
<inputSpec>${project.basedir}/swagger.yaml</inputSpec>
<generatorName>go-gin-server</generatorName>
<output>${project.build.directory}/generated-sources/addl</output>
<additionalProperties>
<additionalProperty>packageName=jimschubert</additionalProperty>
</additionalProperties>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
  • build with mvn -f go-gin-addl.xml compile
  • inspect target/generated-sources/addl/go/api_pet.go
  • packageName is set as expected

go-gin-global.xml

<projectxmlns="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>org.openapitools</groupId>
<artifactId>go-gin-global-project</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>sample-project</name>
<url>http://maven.apache.org</url>
<build>
<plugins>
<!-- activate the plugin -->
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>4.0.0-SNAPSHOT</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<!-- specify the swagger yaml -->
<inputSpec>${project.basedir}/swagger.yaml</inputSpec>
<generatorName>go-gin-server</generatorName>
<output>${project.build.directory}/generated-sources/global</output>
<packageName>jimschubert</packageName>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
  • build with mvn -f go-gin-global.xml compile
  • inspect target/generated-sources/global/go/api_pet.go
  • packageName is set as expected

To address the concern about global options not being used by all generators, I've opened #2556 for further discussion.

I'll go ahead and merge this, then make any additional changes to the CLI and Gradle Plugin.

@jimschubertjimschubert added this to the 4.0.0 milestone Apr 1, 2019
@jimschubert
jimschubert merged commit 9c7d407 into OpenAPITools:masterApr 1, 2019
jimschubert added a commit that referenced this pull request Apr 2, 2019
* master: (133 commits)
#2503: fix out-of-memory issue with nested objects with arrays with maxItems set by limiting to max. 5 example items (#2536)
remove emitDefaultValue option (#2559)
fix EmitDefaultValue default vallue with false (#2558)
Added API Key auth to rust-server (#2459)
remove initialCaps and replace with camelize (#2546)
Add packageName configuration to maven (#2429)
[Typescript AngularJS] fix Extra package prefix in api parameters operations (#2522)
#1023 - [Scala] Use status family during response processing (#1024)
Generate setters for readonly properties in server code (#1582)
[JS] fix NPE for null string and improve Travis config file (#2553)
[elm] Update ISO 8601 library (fixes missing time zone designator) (#2545)
[csharp] update sample after #2528 (#2550)
[JavaScript] fix index.js, ApiClient.js and test files generated to incorrect location (#2511)
Aspnetcore nullable support (#2529)
Csharp nullable support (#2528)
[C++] [Qt5] Add enum support for client and server (#2339)
Fixed typo in migration-from-swagger-codegen.md (#2548)
[TypeScript Client] fix install Aurelia + fix use deprecated function (#2514)
[KOTLIN] fix var name not correctly sanitized (#2537)
Update swagger-parser to '2.0.11-OpenAPITools.org-1' (#2262)
...
@q3769-patientpoint

Copy link
Copy Markdown

I just tried 7.8.0 for Java code gen (Native). The pacakgeName has no effect in or outside configOptions element. Only way to change the base package is using apiPackage/modelPackage/invokerPackage elements inside the configOptions element.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] packageName ignored by maven plugin

4 participants

@Zomzog@jimschubert@wing328@q3769-patientpoint
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Add packageName configuration to maven by Zomzog · Pull Request #2429 · OpenAPITools/openapi-generator · GitHub
Skip to content

Add packageName configuration to maven - #2429

Merged
jimschubert merged 1 commit into
OpenAPITools:masterfrom
Zomzog:2428
Apr 1, 2019
Merged

Add packageName configuration to maven#2429
jimschubert merged 1 commit into
OpenAPITools:masterfrom
Zomzog:2428

Conversation

@Zomzog

@ZomzogZomzog commented Mar 16, 2019

Copy link
Copy Markdown
Contributor

PR checklist

  • Read the contribution guidelines.
  • Ran the shell script under ./bin/ to update Petstore sample so that CIs can verify the change. (For instance, only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh, ./bin/security/{LANG}-petstore.sh and ./bin/openapi3/security/{LANG}-petstore.sh if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in .\bin\windows\.
  • Filed the PR against the correct branch: master, 3.4.x, 4.0.x. Default: master.
  • Copied the technical committee to review the pull request if your PR is targeting a particular programming language.

Description of the PR

Add packageName configuration to maven for Kotlin client generation.

Must fix#2428

@jimschubert@dr4ke616

@jimschubert

Copy link
Copy Markdown
Member

Thanks for the PR. I've skimmed it and it looks good. I'll need to look into unrelated CI failures before merge.

@wing328

Copy link
Copy Markdown
Member

@jimschubert I've left a comment in #2428 (comment).

If that works, I think we can skip this PR.

@jimschubert

Copy link
Copy Markdown
Member

@wing328 Having read that linked issue, I still agree with the approach in this PR. I think we'll also want to add packageName as a global option, as I don't think the concern applies only to Kotlin.

Looking at the top-level generators options:

openapi-generator-cli generate
[(-a <authorization> | --auth <authorization>)]
[--additional-properties <additional properties>...]
[--api-package <api package>] [--artifact-id <artifact id>]
[--artifact-version <artifact version>]
[(-c <configuration file> | --config <configuration file>)]
[-D <system properties>...]
[(-g <generator name> | --generator-name <generator name>)]
[--git-repo-id <git repo id>] [--git-user-id <git user id>]
[--group-id <group id>] [--http-user-agent <http user agent>]
(-i <spec file> | --input-spec <spec file>)
[--ignore-file-override <ignore file override location>]
[--import-mappings <import mappings>...]
[--instantiation-types <instantiation types>...]
[--invoker-package <invoker package>]
[--language-specific-primitives <language specific primitives>...]
[--library <library>] [--log-to-stderr]
[--model-name-prefix <model name prefix>]
[--model-name-suffix <model name suffix>]
[--model-package <model package>]
[(-o <output directory> | --output <output directory>)]
[--release-note <release note>] [--remove-operation-id-prefix]
[--reserved-words-mappings <reserved word mappings>...]
[(-s | --skip-overwrite)] [--skip-validate-spec]
[(-t <template directory> | --template-dir <template directory>)]
[--type-mappings <type mappings>...]

We have invoker, model, and api packages which can be passed as global configurations. From a user's perspective it would be weird to pass a base package name in a different manner.

I don't believe all generators handle those package options in the same way, so I feel like options for consistency would be to either move model/api/invoker package configuration out of globals or to add packageName to globals. Like the globals that exist today, users can still apply the settings via additionalProperties.

If we do go with this approach, we'll want to also add to the Gradle plugin.

@jimschubertjimschubert self-assigned this Mar 26, 2019
@Zomzog

Copy link
Copy Markdown
ContributorAuthor

So what is your preferred choice?

@jimschubert

Copy link
Copy Markdown
Member

I raised the question with the core team, and was waiting for a response.

For reference, I tested this locally with two maven files:

go-gin-addl.xml

<projectxmlns="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>org.openapitools</groupId>
<artifactId>go-gin-addl-project</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>sample-project</name>
<url>http://maven.apache.org</url>
<build>
<plugins>
<!-- activate the plugin -->
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>4.0.0-SNAPSHOT</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<!-- specify the swagger yaml -->
<inputSpec>${project.basedir}/swagger.yaml</inputSpec>
<generatorName>go-gin-server</generatorName>
<output>${project.build.directory}/generated-sources/addl</output>
<additionalProperties>
<additionalProperty>packageName=jimschubert</additionalProperty>
</additionalProperties>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
  • build with mvn -f go-gin-addl.xml compile
  • inspect target/generated-sources/addl/go/api_pet.go
  • packageName is set as expected

go-gin-global.xml

<projectxmlns="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>org.openapitools</groupId>
<artifactId>go-gin-global-project</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>sample-project</name>
<url>http://maven.apache.org</url>
<build>
<plugins>
<!-- activate the plugin -->
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>4.0.0-SNAPSHOT</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<!-- specify the swagger yaml -->
<inputSpec>${project.basedir}/swagger.yaml</inputSpec>
<generatorName>go-gin-server</generatorName>
<output>${project.build.directory}/generated-sources/global</output>
<packageName>jimschubert</packageName>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
  • build with mvn -f go-gin-global.xml compile
  • inspect target/generated-sources/global/go/api_pet.go
  • packageName is set as expected

To address the concern about global options not being used by all generators, I've opened #2556 for further discussion.

I'll go ahead and merge this, then make any additional changes to the CLI and Gradle Plugin.

@jimschubertjimschubert added this to the 4.0.0 milestone Apr 1, 2019
@jimschubert
jimschubert merged commit 9c7d407 into OpenAPITools:masterApr 1, 2019
jimschubert added a commit that referenced this pull request Apr 2, 2019
* master: (133 commits)
#2503: fix out-of-memory issue with nested objects with arrays with maxItems set by limiting to max. 5 example items (#2536)
remove emitDefaultValue option (#2559)
fix EmitDefaultValue default vallue with false (#2558)
Added API Key auth to rust-server (#2459)
remove initialCaps and replace with camelize (#2546)
Add packageName configuration to maven (#2429)
[Typescript AngularJS] fix Extra package prefix in api parameters operations (#2522)
#1023 - [Scala] Use status family during response processing (#1024)
Generate setters for readonly properties in server code (#1582)
[JS] fix NPE for null string and improve Travis config file (#2553)
[elm] Update ISO 8601 library (fixes missing time zone designator) (#2545)
[csharp] update sample after #2528 (#2550)
[JavaScript] fix index.js, ApiClient.js and test files generated to incorrect location (#2511)
Aspnetcore nullable support (#2529)
Csharp nullable support (#2528)
[C++] [Qt5] Add enum support for client and server (#2339)
Fixed typo in migration-from-swagger-codegen.md (#2548)
[TypeScript Client] fix install Aurelia + fix use deprecated function (#2514)
[KOTLIN] fix var name not correctly sanitized (#2537)
Update swagger-parser to '2.0.11-OpenAPITools.org-1' (#2262)
...
@q3769-patientpoint

Copy link
Copy Markdown

I just tried 7.8.0 for Java code gen (Native). The pacakgeName has no effect in or outside configOptions element. Only way to change the base package is using apiPackage/modelPackage/invokerPackage elements inside the configOptions element.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] packageName ignored by maven plugin

4 participants

@Zomzog@jimschubert@wing328@q3769-patientpoint
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add packageName configuration to maven by Zomzog · Pull Request #2429 · OpenAPITools/openapi-generator · GitHub
Skip to content

Add packageName configuration to maven - #2429

Merged
jimschubert merged 1 commit into
OpenAPITools:masterfrom
Zomzog:2428
Apr 1, 2019
Merged

Add packageName configuration to maven#2429
jimschubert merged 1 commit into
OpenAPITools:masterfrom
Zomzog:2428

Conversation

@Zomzog

@ZomzogZomzog commented Mar 16, 2019

Copy link
Copy Markdown
Contributor

PR checklist

  • Read the contribution guidelines.
  • Ran the shell script under ./bin/ to update Petstore sample so that CIs can verify the change. (For instance, only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh, ./bin/security/{LANG}-petstore.sh and ./bin/openapi3/security/{LANG}-petstore.sh if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in .\bin\windows\.
  • Filed the PR against the correct branch: master, 3.4.x, 4.0.x. Default: master.
  • Copied the technical committee to review the pull request if your PR is targeting a particular programming language.

Description of the PR

Add packageName configuration to maven for Kotlin client generation.

Must fix#2428

@jimschubert@dr4ke616

@jimschubert

Copy link
Copy Markdown
Member

Thanks for the PR. I've skimmed it and it looks good. I'll need to look into unrelated CI failures before merge.

@wing328

Copy link
Copy Markdown
Member

@jimschubert I've left a comment in #2428 (comment).

If that works, I think we can skip this PR.

@jimschubert

Copy link
Copy Markdown
Member

@wing328 Having read that linked issue, I still agree with the approach in this PR. I think we'll also want to add packageName as a global option, as I don't think the concern applies only to Kotlin.

Looking at the top-level generators options:

openapi-generator-cli generate
[(-a <authorization> | --auth <authorization>)]
[--additional-properties <additional properties>...]
[--api-package <api package>] [--artifact-id <artifact id>]
[--artifact-version <artifact version>]
[(-c <configuration file> | --config <configuration file>)]
[-D <system properties>...]
[(-g <generator name> | --generator-name <generator name>)]
[--git-repo-id <git repo id>] [--git-user-id <git user id>]
[--group-id <group id>] [--http-user-agent <http user agent>]
(-i <spec file> | --input-spec <spec file>)
[--ignore-file-override <ignore file override location>]
[--import-mappings <import mappings>...]
[--instantiation-types <instantiation types>...]
[--invoker-package <invoker package>]
[--language-specific-primitives <language specific primitives>...]
[--library <library>] [--log-to-stderr]
[--model-name-prefix <model name prefix>]
[--model-name-suffix <model name suffix>]
[--model-package <model package>]
[(-o <output directory> | --output <output directory>)]
[--release-note <release note>] [--remove-operation-id-prefix]
[--reserved-words-mappings <reserved word mappings>...]
[(-s | --skip-overwrite)] [--skip-validate-spec]
[(-t <template directory> | --template-dir <template directory>)]
[--type-mappings <type mappings>...]

We have invoker, model, and api packages which can be passed as global configurations. From a user's perspective it would be weird to pass a base package name in a different manner.

I don't believe all generators handle those package options in the same way, so I feel like options for consistency would be to either move model/api/invoker package configuration out of globals or to add packageName to globals. Like the globals that exist today, users can still apply the settings via additionalProperties.

If we do go with this approach, we'll want to also add to the Gradle plugin.

@jimschubertjimschubert self-assigned this Mar 26, 2019
@Zomzog

Copy link
Copy Markdown
ContributorAuthor

So what is your preferred choice?

@jimschubert

Copy link
Copy Markdown
Member

I raised the question with the core team, and was waiting for a response.

For reference, I tested this locally with two maven files:

go-gin-addl.xml

<projectxmlns="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>org.openapitools</groupId>
<artifactId>go-gin-addl-project</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>sample-project</name>
<url>http://maven.apache.org</url>
<build>
<plugins>
<!-- activate the plugin -->
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>4.0.0-SNAPSHOT</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<!-- specify the swagger yaml -->
<inputSpec>${project.basedir}/swagger.yaml</inputSpec>
<generatorName>go-gin-server</generatorName>
<output>${project.build.directory}/generated-sources/addl</output>
<additionalProperties>
<additionalProperty>packageName=jimschubert</additionalProperty>
</additionalProperties>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
  • build with mvn -f go-gin-addl.xml compile
  • inspect target/generated-sources/addl/go/api_pet.go
  • packageName is set as expected

go-gin-global.xml

<projectxmlns="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>org.openapitools</groupId>
<artifactId>go-gin-global-project</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>sample-project</name>
<url>http://maven.apache.org</url>
<build>
<plugins>
<!-- activate the plugin -->
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>4.0.0-SNAPSHOT</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<!-- specify the swagger yaml -->
<inputSpec>${project.basedir}/swagger.yaml</inputSpec>
<generatorName>go-gin-server</generatorName>
<output>${project.build.directory}/generated-sources/global</output>
<packageName>jimschubert</packageName>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
  • build with mvn -f go-gin-global.xml compile
  • inspect target/generated-sources/global/go/api_pet.go
  • packageName is set as expected

To address the concern about global options not being used by all generators, I've opened #2556 for further discussion.

I'll go ahead and merge this, then make any additional changes to the CLI and Gradle Plugin.

@jimschubertjimschubert added this to the 4.0.0 milestone Apr 1, 2019
@jimschubert
jimschubert merged commit 9c7d407 into OpenAPITools:masterApr 1, 2019
jimschubert added a commit that referenced this pull request Apr 2, 2019
* master: (133 commits)
#2503: fix out-of-memory issue with nested objects with arrays with maxItems set by limiting to max. 5 example items (#2536)
remove emitDefaultValue option (#2559)
fix EmitDefaultValue default vallue with false (#2558)
Added API Key auth to rust-server (#2459)
remove initialCaps and replace with camelize (#2546)
Add packageName configuration to maven (#2429)
[Typescript AngularJS] fix Extra package prefix in api parameters operations (#2522)
#1023 - [Scala] Use status family during response processing (#1024)
Generate setters for readonly properties in server code (#1582)
[JS] fix NPE for null string and improve Travis config file (#2553)
[elm] Update ISO 8601 library (fixes missing time zone designator) (#2545)
[csharp] update sample after #2528 (#2550)
[JavaScript] fix index.js, ApiClient.js and test files generated to incorrect location (#2511)
Aspnetcore nullable support (#2529)
Csharp nullable support (#2528)
[C++] [Qt5] Add enum support for client and server (#2339)
Fixed typo in migration-from-swagger-codegen.md (#2548)
[TypeScript Client] fix install Aurelia + fix use deprecated function (#2514)
[KOTLIN] fix var name not correctly sanitized (#2537)
Update swagger-parser to '2.0.11-OpenAPITools.org-1' (#2262)
...
@q3769-patientpoint

Copy link
Copy Markdown

I just tried 7.8.0 for Java code gen (Native). The pacakgeName has no effect in or outside configOptions element. Only way to change the base package is using apiPackage/modelPackage/invokerPackage elements inside the configOptions element.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] packageName ignored by maven plugin

4 participants

@Zomzog@jimschubert@wing328@q3769-patientpoint
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add packageName configuration to maven by Zomzog · Pull Request #2429 · OpenAPITools/openapi-generator · GitHub
Skip to content

Add packageName configuration to maven - #2429

Merged
jimschubert merged 1 commit into
OpenAPITools:masterfrom
Zomzog:2428
Apr 1, 2019
Merged

Add packageName configuration to maven#2429
jimschubert merged 1 commit into
OpenAPITools:masterfrom
Zomzog:2428

Conversation

@Zomzog

@ZomzogZomzog commented Mar 16, 2019

Copy link
Copy Markdown
Contributor

PR checklist

  • Read the contribution guidelines.
  • Ran the shell script under ./bin/ to update Petstore sample so that CIs can verify the change. (For instance, only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh, ./bin/security/{LANG}-petstore.sh and ./bin/openapi3/security/{LANG}-petstore.sh if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in .\bin\windows\.
  • Filed the PR against the correct branch: master, 3.4.x, 4.0.x. Default: master.
  • Copied the technical committee to review the pull request if your PR is targeting a particular programming language.

Description of the PR

Add packageName configuration to maven for Kotlin client generation.

Must fix#2428

@jimschubert@dr4ke616

@jimschubert

Copy link
Copy Markdown
Member

Thanks for the PR. I've skimmed it and it looks good. I'll need to look into unrelated CI failures before merge.

@wing328

Copy link
Copy Markdown
Member

@jimschubert I've left a comment in #2428 (comment).

If that works, I think we can skip this PR.

@jimschubert

Copy link
Copy Markdown
Member

@wing328 Having read that linked issue, I still agree with the approach in this PR. I think we'll also want to add packageName as a global option, as I don't think the concern applies only to Kotlin.

Looking at the top-level generators options:

openapi-generator-cli generate
[(-a <authorization> | --auth <authorization>)]
[--additional-properties <additional properties>...]
[--api-package <api package>] [--artifact-id <artifact id>]
[--artifact-version <artifact version>]
[(-c <configuration file> | --config <configuration file>)]
[-D <system properties>...]
[(-g <generator name> | --generator-name <generator name>)]
[--git-repo-id <git repo id>] [--git-user-id <git user id>]
[--group-id <group id>] [--http-user-agent <http user agent>]
(-i <spec file> | --input-spec <spec file>)
[--ignore-file-override <ignore file override location>]
[--import-mappings <import mappings>...]
[--instantiation-types <instantiation types>...]
[--invoker-package <invoker package>]
[--language-specific-primitives <language specific primitives>...]
[--library <library>] [--log-to-stderr]
[--model-name-prefix <model name prefix>]
[--model-name-suffix <model name suffix>]
[--model-package <model package>]
[(-o <output directory> | --output <output directory>)]
[--release-note <release note>] [--remove-operation-id-prefix]
[--reserved-words-mappings <reserved word mappings>...]
[(-s | --skip-overwrite)] [--skip-validate-spec]
[(-t <template directory> | --template-dir <template directory>)]
[--type-mappings <type mappings>...]

We have invoker, model, and api packages which can be passed as global configurations. From a user's perspective it would be weird to pass a base package name in a different manner.

I don't believe all generators handle those package options in the same way, so I feel like options for consistency would be to either move model/api/invoker package configuration out of globals or to add packageName to globals. Like the globals that exist today, users can still apply the settings via additionalProperties.

If we do go with this approach, we'll want to also add to the Gradle plugin.

@jimschubertjimschubert self-assigned this Mar 26, 2019
@Zomzog

Copy link
Copy Markdown
ContributorAuthor

So what is your preferred choice?

@jimschubert

Copy link
Copy Markdown
Member

I raised the question with the core team, and was waiting for a response.

For reference, I tested this locally with two maven files:

go-gin-addl.xml

<projectxmlns="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>org.openapitools</groupId>
<artifactId>go-gin-addl-project</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>sample-project</name>
<url>http://maven.apache.org</url>
<build>
<plugins>
<!-- activate the plugin -->
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>4.0.0-SNAPSHOT</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<!-- specify the swagger yaml -->
<inputSpec>${project.basedir}/swagger.yaml</inputSpec>
<generatorName>go-gin-server</generatorName>
<output>${project.build.directory}/generated-sources/addl</output>
<additionalProperties>
<additionalProperty>packageName=jimschubert</additionalProperty>
</additionalProperties>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
  • build with mvn -f go-gin-addl.xml compile
  • inspect target/generated-sources/addl/go/api_pet.go
  • packageName is set as expected

go-gin-global.xml

<projectxmlns="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>org.openapitools</groupId>
<artifactId>go-gin-global-project</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>sample-project</name>
<url>http://maven.apache.org</url>
<build>
<plugins>
<!-- activate the plugin -->
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>4.0.0-SNAPSHOT</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<!-- specify the swagger yaml -->
<inputSpec>${project.basedir}/swagger.yaml</inputSpec>
<generatorName>go-gin-server</generatorName>
<output>${project.build.directory}/generated-sources/global</output>
<packageName>jimschubert</packageName>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
  • build with mvn -f go-gin-global.xml compile
  • inspect target/generated-sources/global/go/api_pet.go
  • packageName is set as expected

To address the concern about global options not being used by all generators, I've opened #2556 for further discussion.

I'll go ahead and merge this, then make any additional changes to the CLI and Gradle Plugin.

@jimschubertjimschubert added this to the 4.0.0 milestone Apr 1, 2019
@jimschubert
jimschubert merged commit 9c7d407 into OpenAPITools:masterApr 1, 2019
jimschubert added a commit that referenced this pull request Apr 2, 2019
* master: (133 commits)
#2503: fix out-of-memory issue with nested objects with arrays with maxItems set by limiting to max. 5 example items (#2536)
remove emitDefaultValue option (#2559)
fix EmitDefaultValue default vallue with false (#2558)
Added API Key auth to rust-server (#2459)
remove initialCaps and replace with camelize (#2546)
Add packageName configuration to maven (#2429)
[Typescript AngularJS] fix Extra package prefix in api parameters operations (#2522)
#1023 - [Scala] Use status family during response processing (#1024)
Generate setters for readonly properties in server code (#1582)
[JS] fix NPE for null string and improve Travis config file (#2553)
[elm] Update ISO 8601 library (fixes missing time zone designator) (#2545)
[csharp] update sample after #2528 (#2550)
[JavaScript] fix index.js, ApiClient.js and test files generated to incorrect location (#2511)
Aspnetcore nullable support (#2529)
Csharp nullable support (#2528)
[C++] [Qt5] Add enum support for client and server (#2339)
Fixed typo in migration-from-swagger-codegen.md (#2548)
[TypeScript Client] fix install Aurelia + fix use deprecated function (#2514)
[KOTLIN] fix var name not correctly sanitized (#2537)
Update swagger-parser to '2.0.11-OpenAPITools.org-1' (#2262)
...
@q3769-patientpoint

Copy link
Copy Markdown

I just tried 7.8.0 for Java code gen (Native). The pacakgeName has no effect in or outside configOptions element. Only way to change the base package is using apiPackage/modelPackage/invokerPackage elements inside the configOptions element.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] packageName ignored by maven plugin

4 participants

@Zomzog@jimschubert@wing328@q3769-patientpoint
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Add packageName configuration to maven by Zomzog · Pull Request #2429 · OpenAPITools/openapi-generator · GitHub
Skip to content

Add packageName configuration to maven - #2429

Merged
jimschubert merged 1 commit into
OpenAPITools:masterfrom
Zomzog:2428
Apr 1, 2019
Merged

Add packageName configuration to maven#2429
jimschubert merged 1 commit into
OpenAPITools:masterfrom
Zomzog:2428

Conversation

@Zomzog

@ZomzogZomzog commented Mar 16, 2019

Copy link
Copy Markdown
Contributor

PR checklist

  • Read the contribution guidelines.
  • Ran the shell script under ./bin/ to update Petstore sample so that CIs can verify the change. (For instance, only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh, ./bin/security/{LANG}-petstore.sh and ./bin/openapi3/security/{LANG}-petstore.sh if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in .\bin\windows\.
  • Filed the PR against the correct branch: master, 3.4.x, 4.0.x. Default: master.
  • Copied the technical committee to review the pull request if your PR is targeting a particular programming language.

Description of the PR

Add packageName configuration to maven for Kotlin client generation.

Must fix#2428

@jimschubert@dr4ke616

@jimschubert

Copy link
Copy Markdown
Member

Thanks for the PR. I've skimmed it and it looks good. I'll need to look into unrelated CI failures before merge.

@wing328

Copy link
Copy Markdown
Member

@jimschubert I've left a comment in #2428 (comment).

If that works, I think we can skip this PR.

@jimschubert

Copy link
Copy Markdown
Member

@wing328 Having read that linked issue, I still agree with the approach in this PR. I think we'll also want to add packageName as a global option, as I don't think the concern applies only to Kotlin.

Looking at the top-level generators options:

openapi-generator-cli generate
[(-a <authorization> | --auth <authorization>)]
[--additional-properties <additional properties>...]
[--api-package <api package>] [--artifact-id <artifact id>]
[--artifact-version <artifact version>]
[(-c <configuration file> | --config <configuration file>)]
[-D <system properties>...]
[(-g <generator name> | --generator-name <generator name>)]
[--git-repo-id <git repo id>] [--git-user-id <git user id>]
[--group-id <group id>] [--http-user-agent <http user agent>]
(-i <spec file> | --input-spec <spec file>)
[--ignore-file-override <ignore file override location>]
[--import-mappings <import mappings>...]
[--instantiation-types <instantiation types>...]
[--invoker-package <invoker package>]
[--language-specific-primitives <language specific primitives>...]
[--library <library>] [--log-to-stderr]
[--model-name-prefix <model name prefix>]
[--model-name-suffix <model name suffix>]
[--model-package <model package>]
[(-o <output directory> | --output <output directory>)]
[--release-note <release note>] [--remove-operation-id-prefix]
[--reserved-words-mappings <reserved word mappings>...]
[(-s | --skip-overwrite)] [--skip-validate-spec]
[(-t <template directory> | --template-dir <template directory>)]
[--type-mappings <type mappings>...]

We have invoker, model, and api packages which can be passed as global configurations. From a user's perspective it would be weird to pass a base package name in a different manner.

I don't believe all generators handle those package options in the same way, so I feel like options for consistency would be to either move model/api/invoker package configuration out of globals or to add packageName to globals. Like the globals that exist today, users can still apply the settings via additionalProperties.

If we do go with this approach, we'll want to also add to the Gradle plugin.

@jimschubertjimschubert self-assigned this Mar 26, 2019
@Zomzog

Copy link
Copy Markdown
ContributorAuthor

So what is your preferred choice?

@jimschubert

Copy link
Copy Markdown
Member

I raised the question with the core team, and was waiting for a response.

For reference, I tested this locally with two maven files:

go-gin-addl.xml

<projectxmlns="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>org.openapitools</groupId>
<artifactId>go-gin-addl-project</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>sample-project</name>
<url>http://maven.apache.org</url>
<build>
<plugins>
<!-- activate the plugin -->
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>4.0.0-SNAPSHOT</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<!-- specify the swagger yaml -->
<inputSpec>${project.basedir}/swagger.yaml</inputSpec>
<generatorName>go-gin-server</generatorName>
<output>${project.build.directory}/generated-sources/addl</output>
<additionalProperties>
<additionalProperty>packageName=jimschubert</additionalProperty>
</additionalProperties>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
  • build with mvn -f go-gin-addl.xml compile
  • inspect target/generated-sources/addl/go/api_pet.go
  • packageName is set as expected

go-gin-global.xml

<projectxmlns="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>org.openapitools</groupId>
<artifactId>go-gin-global-project</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>sample-project</name>
<url>http://maven.apache.org</url>
<build>
<plugins>
<!-- activate the plugin -->
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>4.0.0-SNAPSHOT</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<!-- specify the swagger yaml -->
<inputSpec>${project.basedir}/swagger.yaml</inputSpec>
<generatorName>go-gin-server</generatorName>
<output>${project.build.directory}/generated-sources/global</output>
<packageName>jimschubert</packageName>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
  • build with mvn -f go-gin-global.xml compile
  • inspect target/generated-sources/global/go/api_pet.go
  • packageName is set as expected

To address the concern about global options not being used by all generators, I've opened #2556 for further discussion.

I'll go ahead and merge this, then make any additional changes to the CLI and Gradle Plugin.

@jimschubertjimschubert added this to the 4.0.0 milestone Apr 1, 2019
@jimschubert
jimschubert merged commit 9c7d407 into OpenAPITools:masterApr 1, 2019
jimschubert added a commit that referenced this pull request Apr 2, 2019
* master: (133 commits)
#2503: fix out-of-memory issue with nested objects with arrays with maxItems set by limiting to max. 5 example items (#2536)
remove emitDefaultValue option (#2559)
fix EmitDefaultValue default vallue with false (#2558)
Added API Key auth to rust-server (#2459)
remove initialCaps and replace with camelize (#2546)
Add packageName configuration to maven (#2429)
[Typescript AngularJS] fix Extra package prefix in api parameters operations (#2522)
#1023 - [Scala] Use status family during response processing (#1024)
Generate setters for readonly properties in server code (#1582)
[JS] fix NPE for null string and improve Travis config file (#2553)
[elm] Update ISO 8601 library (fixes missing time zone designator) (#2545)
[csharp] update sample after #2528 (#2550)
[JavaScript] fix index.js, ApiClient.js and test files generated to incorrect location (#2511)
Aspnetcore nullable support (#2529)
Csharp nullable support (#2528)
[C++] [Qt5] Add enum support for client and server (#2339)
Fixed typo in migration-from-swagger-codegen.md (#2548)
[TypeScript Client] fix install Aurelia + fix use deprecated function (#2514)
[KOTLIN] fix var name not correctly sanitized (#2537)
Update swagger-parser to '2.0.11-OpenAPITools.org-1' (#2262)
...
@q3769-patientpoint

Copy link
Copy Markdown

I just tried 7.8.0 for Java code gen (Native). The pacakgeName has no effect in or outside configOptions element. Only way to change the base package is using apiPackage/modelPackage/invokerPackage elements inside the configOptions element.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] packageName ignored by maven plugin

4 participants

@Zomzog@jimschubert@wing328@q3769-patientpoint