{"id":31576215,"url":"https://github.com/eclipse-ee4j/glassfish-spec-version-maven-plugin","last_synced_at":"2025-10-05T17:33:04.989Z","repository":{"id":65853116,"uuid":"149486776","full_name":"eclipse-ee4j/glassfish-spec-version-maven-plugin","owner":"eclipse-ee4j","description":"API Specification Version Maven Plugin","archived":false,"fork":false,"pushed_at":"2025-09-26T20:55:56.000Z","size":361,"stargazers_count":2,"open_issues_count":3,"forks_count":6,"subscribers_count":23,"default_branch":"master","last_synced_at":"2025-09-26T22:27:32.558Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eclipse-ee4j.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE.md","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-09-19T17:22:17.000Z","updated_at":"2025-09-26T20:55:51.000Z","dependencies_parsed_at":"2023-10-02T19:56:31.733Z","dependency_job_id":"d5aed9ca-6da0-4a92-9ebd-dfc9c5ce56a4","html_url":"https://github.com/eclipse-ee4j/glassfish-spec-version-maven-plugin","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/eclipse-ee4j/glassfish-spec-version-maven-plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-ee4j%2Fglassfish-spec-version-maven-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-ee4j%2Fglassfish-spec-version-maven-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-ee4j%2Fglassfish-spec-version-maven-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-ee4j%2Fglassfish-spec-version-maven-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eclipse-ee4j","download_url":"https://codeload.github.com/eclipse-ee4j/glassfish-spec-version-maven-plugin/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-ee4j%2Fglassfish-spec-version-maven-plugin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278487422,"owners_count":25995176,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-05T02:00:06.059Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-10-05T17:32:56.105Z","updated_at":"2025-10-05T17:33:04.982Z","avatar_url":"https://github.com/eclipse-ee4j.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# API Specification Version Maven Plugin\n\nThe API Specification Version Plugin provides goals to set properties for manifest file OSGI headers and to verify and enforce specification properties to be compliant with [JakartaEE Maven Versioning Rules](https://wiki.eclipse.org/JakartaEE_Maven_Versioning_Rules).\n\n**Goals:**\n* `set-spec-properties` (validate phase)\n* `check-module` (package phase) - enforce spec rules on a module and fail the build\n* `check-distribution` (package phase) - Check a set of spec artifacts in a directory.\n* `cli` (validate phase) - run spec verifications from the command line\n\n## Spec object\n\nSpec object is mandatory parameter of all plugin goals. But set of mandatory object properties depends on specific goal and values of `jarType` and `nonFinal` properties.\n\n| Property | Type | Default\u003cbr/\u003eValue | Description |\n| --- | --- | --- | --- |\n| nonFinal | boolean | false | `true` for version numbers of non-final specifications\u003c/br\u003e`false` for version numbers of final specifications\n| jarType | `api`\u0026vert;`impl`| `api` | `api`: specification with a separate API jar file \u003cbr/\u003e`impl`: specification with a standalone API jar file |\n| apiPackage | java package | | primary Java package defining the API, with `javax` replaced by `jakarta` |\n| implNamespace | java package | | primary Java package or namespace used by the implementation of the API, or with which the implementation of the API is associated |\n| specVersion | version | | version number of the last final specification, always of the form `\u003cmajor\u003e.\u003cminor\u003e` |\n| newSpecVersion | version | | version number of the specification under development |\n| specImplVersion | version | | version number of the API classes, derived from specVersion by adding an optional micro version number |\n| implVersion | version | | version number of the implementation |\n| newImplVersion | version | | version number of the implementation that will be used when the implementation is final |\n| specBuild | version | | number of a particular build of the API jar file, e.g., \"01\", \"02\", etc |\n| implBuild | version | | number of a particular build of the implementation jar file, e.g., \"01\", \"02\", etc. |\n\nVersion type is stored in String variables so leading zeroes won't be lost.\nProperties must be encapsulated in `\u003cspec\u003e` section to be part of Spec object when defined in `pom.xml`, see [examples](#specification-version-plugin-configuration).\n\n## Goal: `set-spec-properties`\n\nSets properties for manifest file OSGI headers.\n\n### Properties\n\n| Property | Type | Default\u003cbr/\u003eValue | Description |\n| --- | --- | --- | --- |\n| `spec` | object |  | Required. API specification properties |\n| `specMode` | `jakarta`\u0026vert;`javax` | `jakarta` | `jakarta`: Jakarta EE projects mode\u003cbr/\u003e`javaee`: legacy mode for java.net projects (deprecated) |\n\n### Properties Mapping for `api` jarType\n\n| Property | OSGI Header | Source |\n| --- | --- | --- |\n| `spec.bundle.symbolic-name` | Bundle-SymbolicName | `apiPackage` |\n| `spec.bundle.spec.version`| BundleSpecVersion | `specVersion` |\n| `spec.bundle.version`| Bundle-Version | `specImplVersion` |\n| `spec.extension.name`| Extension-Name | `apiPackage` |\n| `spec.specification.version`| Specification-Version | `specVersion` |\n| `spec.implementation.version`| Implementation-Version | `specImplVersion` |\n\n### Properties Mapping for `impl` jarType\n\n| Property | OSGI Header | Source |\n| --- | --- | --- |\n| `spec.bundle.symbolic-name` | Bundle-SymbolicName | `implNamespace '.' apiPackage` |\n| `spec.bundle.spec.version`| BundleSpecVersion | `specVersion` |\n| `spec.bundle.version`| Bundle-Version | `implVersion` |\n| `spec.extension.name`| Extension-Name | `apiPackage` |\n| `spec.specification.version`| Specification-Version | `specVersion` |\n| `spec.implementation.version`| Implementation-Version | `${project.version}` |\n\n## Goal: `check-module`\n\nValidates specification properties consistency with [Jakarta EE Maven Versioning Rules](https://wiki.eclipse.org/JakartaEE_Maven_Versioning_Rules) for a single module.\n\n### Properties\n\n| Property | Type | Default\u003cbr/\u003eValue | Description |\n| --- | --- | --- | --- |\n| `spec` | object |  | Required. API specification properties |\n| `specMode` | `jakarta`\u0026vert;`javax` | `jakarta` | `jakarta`: Jakarta EE projects mode\u003cbr/\u003e`javaee`: legacy mode for java.net projects (deprecated) |\n| `module` | file | *artifact* | The module file to check |\n| `ignoreErrors` | `boolean` | `false` | whether this goal should just print warnings or fail |\n\n*artifact*: `${project.build.directory}/${project.build.finalName}.${project.packaging}` (this project's artifact file)\n\n## Goal: `check-distribution`\n\nValidates specification properties consistency with [Jakarta EE Maven Versioning Rules](https://wiki.eclipse.org/JakartaEE_Maven_Versioning_Rules) for a set of modules in a directory.\n\nOnly prints warnings, doesn't fail the build.\n\n### Properties\n\n| Property | Type | Default\u003cbr/\u003eValue | Description |\n| --- | --- | --- | --- |\n| `dir` | directory |  | Required. The directory to search for module files to check |\n| `specs` | list of spec objects |  | Required. API specification properties |\n| `includes` | `String` | `javax*.jar` | The files in the `dir` directory to include, specified using inclusion Ant patterns |\n| `excludes` | `String` |  | The files in the `dir` directory to exclude, specified using inclusion Ant patterns |\n\n## Goal: `cli`\n\nRun spec verifications from the command line. See [CommandLineMojo.java](src/main/java/org/glassfish/spec/maven/CommandLineMojo.java) for info about supported properties.\n\n## Examples\n\n### Specification Version Plugin Configuration\n\n```xml\n\u003cplugin\u003e\n  \u003cgroupId\u003eorg.glassfish.build\u003c/groupId\u003e\n  \u003cartifactId\u003espec-version-maven-plugin\u003c/artifactId\u003e\n  \u003cconfiguration\u003e\n    \u003cspec\u003e\n      \u003cnonFinal\u003efalse\u003c/nonFinal\u003e\n      \u003cjarType\u003eapi\u003c/jarType\u003e\n      \u003cspecVersion\u003e1.1\u003c/specVersion\u003e\n      \u003cspecImplVersion\u003e1.1.3\u003c/specImplVersion\u003e\n      \u003capiPackage\u003ejakarta.jpa\u003c/apiPackage\u003e\n    \u003c/spec\u003e\n  \u003c/configuration\u003e\n  \u003cexecutions\u003e\n    \u003cexecution\u003e\n      \u003cgoals\u003e\n        \u003cgoal\u003eset-spec-properties\u003c/goal\u003e\n        \u003cgoal\u003echeck-module\u003c/goal\u003e\n      \u003c/goals\u003e\n    \u003c/execution\u003e\n  \u003c/executions\u003e\n\u003c/plugin\u003e\n```\n\n### OSGI Headers Generated Using `spec.` Properties\n\nProperties with `spec.` prefix are generated by `set-spec-properties` goal.\n\n```xml\n\u003cplugin\u003e\n    \u003cgroupId\u003eorg.apache.felix\u003c/groupId\u003e\n    \u003cartifactId\u003emaven-bundle-plugin\u003c/artifactId\u003e\n    \u003cconfiguration\u003e\n        \u003cinstructions\u003e\n            \u003cBundle-Version\u003e${spec.bundle.version}\u003c/Bundle-Version\u003e\n            \u003cBundle-SymbolicName\u003e${spec.bundle.symbolic-name}\u003c/Bundle-SymbolicName\u003e\n            \u003cExtension-Name\u003e${spec.extension.name}\u003c/Extension-Name\u003e\n            \u003cImplementation-Version\u003e${spec.implementation.version}\u003c/Implementation-Version\u003e\n            \u003cSpecification-Version\u003e${spec.specification.version}\u003c/Specification-Version\u003e                               \n        \u003c/instructions\u003e\n    \u003c/configuration\u003e\n    \u003cexecutions\u003e\n        \u003cexecution\u003e\n            \u003cid\u003ebundle-manifest\u003c/id\u003e\n            \u003cphase\u003eprocess-classes\u003c/phase\u003e\n            \u003cgoals\u003e\n                \u003cgoal\u003emanifest\u003c/goal\u003e\n            \u003c/goals\u003e\n        \u003c/execution\u003e\n    \u003c/executions\u003e\n\u003c/plugin\u003e\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feclipse-ee4j%2Fglassfish-spec-version-maven-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feclipse-ee4j%2Fglassfish-spec-version-maven-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feclipse-ee4j%2Fglassfish-spec-version-maven-plugin/lists"}