Skip to content

feat!: New permanent groupId: org.a2aproject.sdk#750

Merged
kabir merged 1 commit intoa2aproject:mainfrom
kabir:change-namespace
Mar 16, 2026
Merged

feat!: New permanent groupId: org.a2aproject.sdk#750
kabir merged 1 commit intoa2aproject:mainfrom
kabir:change-namespace

Conversation

@kabir
Copy link
Collaborator

@kabir kabir commented Mar 16, 2026

The old io.github.a2asdk was temporary. It was decided to not change the package names.

Breaking Change:

Going forward org.a2aproject.sdk will be used as the groupId instead of io.github.a2asdk

The old io.github.a2asdk was temporary
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request introduces a significant, yet straightforward, update to the project's Maven groupId. The previous groupId was temporary, and this change establishes a permanent, official identifier for the SDK artifacts. This ensures long-term stability and clarity for dependency management, though it necessitates updates for all downstream projects.

Highlights

  • Permanent Maven GroupId: The Maven groupId for all SDK artifacts has been updated from io.github.a2asdk to org.a2aproject.sdk, establishing a permanent identifier for the project.
  • Breaking Change: This change is a breaking change, requiring all consumers of the SDK to update their dependency declarations to use the new groupId.
  • Documentation and Script Updates: All relevant documentation, including README.md, AGENTS.md, and RELEASE.md, as well as internal scripts, have been updated to reflect the new groupId.
Changelog
  • .enforcer-scripts/validate-jbang-versions.groovy
    • Updated the groupPrefix variable to reflect the new Maven groupId.
  • AGENTS.md
    • Updated the project overview to reference the new Maven groupId.
  • README.md
    • Updated all dependency examples and warnings to use the new Maven groupId and removed the temporary groupId warning.
  • RELEASE.md
    • Updated Maven Central namespace and grep commands to use the new groupId.
  • boms/README.md
    • Updated artifact references in BOM documentation to use the new groupId.
  • boms/extras/pom.xml
    • Updated parent groupId and extraArtifacts groupId to the new permanent value.
  • boms/extras/src/it/extras-usage-test/pom.xml
    • Updated groupId for the integration test and all dependency groupIds within the test POM.
  • boms/reference/pom.xml
    • Updated parent groupId and extraArtifacts groupId to the new permanent value.
  • boms/reference/src/it/reference-usage-test/pom.xml
    • Updated groupId for the integration test and all dependency groupIds within the test POM.
  • boms/sdk/pom.xml
    • Updated parent groupId and extraArtifacts groupId to the new permanent value.
  • boms/sdk/src/it/sdk-usage-test/pom.xml
    • Updated groupId for the integration test and all dependency groupIds within the test POM.
  • boms/test-utils/pom.xml
    • Updated parent groupId to the new permanent value.
  • client/base/pom.xml
    • Updated parent groupId to the new permanent value.
  • client/transport/grpc/pom.xml
    • Updated parent groupId to the new permanent value.
  • client/transport/jsonrpc/pom.xml
    • Updated parent groupId to the new permanent value.
  • client/transport/rest/pom.xml
    • Updated parent groupId and a dependency groupId to the new permanent value.
  • client/transport/spi/pom.xml
    • Updated parent groupId and a dependency groupId to the new permanent value.
  • common/pom.xml
    • Updated parent groupId to the new permanent value.
  • examples/cloud-deployment/README.md
    • Updated dependency examples to use the new groupId.
  • examples/cloud-deployment/server/pom.xml
    • Updated parent groupId and all dependency groupIds to the new permanent value.
  • examples/helloworld/client/pom.xml
    • Updated parent groupId and all dependency groupIds to the new permanent value.
  • examples/helloworld/client/src/main/java/io/a2a/examples/helloworld/HelloWorldRunner.java
    • Updated JBang //DEPS directives to use the new groupId.
  • examples/helloworld/pom.xml
    • Updated parent groupId and a dependency groupId to the new permanent value.
  • examples/helloworld/server/pom.xml
    • Updated parent groupId and all dependency groupIds to the new permanent value.
  • extras/common/pom.xml
    • Updated parent groupId to the new permanent value.
  • extras/http-client-vertx/README.md
    • Updated dependency example to use the new groupId.
  • extras/http-client-vertx/pom.xml
    • Updated parent groupId to the new permanent value.
  • extras/opentelemetry/client-propagation/pom.xml
    • Updated parent groupId to the new permanent value.
  • extras/opentelemetry/client/pom.xml
    • Updated parent groupId to the new permanent value.
  • extras/opentelemetry/common/pom.xml
    • Updated parent groupId to the new permanent value.
  • extras/opentelemetry/integration-tests/pom.xml
    • Updated parent groupId to the new permanent value.
  • extras/opentelemetry/pom.xml
    • Updated parent groupId to the new permanent value.
  • extras/opentelemetry/server/pom.xml
    • Updated parent groupId to the new permanent value.
  • extras/push-notification-config-store-database-jpa/README.md
    • Updated dependency example to use the new groupId.
  • extras/push-notification-config-store-database-jpa/pom.xml
    • Updated parent groupId to the new permanent value.
  • extras/queue-manager-replicated/README.md
    • Updated dependency examples to use the new groupId.
  • extras/queue-manager-replicated/core/pom.xml
    • Updated parent groupId and all dependency groupIds to the new permanent value.
  • extras/queue-manager-replicated/pom.xml
    • Updated parent groupId to the new permanent value.
  • extras/queue-manager-replicated/replication-mp-reactive/pom.xml
    • Updated parent groupId and all dependency groupIds to the new permanent value.
  • extras/queue-manager-replicated/tests-multi-instance/pom.xml
    • Updated parent groupId to the new permanent value.
  • extras/queue-manager-replicated/tests-multi-instance/quarkus-app-1/pom.xml
    • Updated parent groupId and all dependency groupIds to the new permanent value.
  • extras/queue-manager-replicated/tests-multi-instance/quarkus-app-2/pom.xml
    • Updated parent groupId and all dependency groupIds to the new permanent value.
  • extras/queue-manager-replicated/tests-multi-instance/quarkus-common/pom.xml
    • Updated parent groupId and all dependency groupIds to the new permanent value.
  • extras/queue-manager-replicated/tests-multi-instance/tests/pom.xml
    • Updated parent groupId and all dependency groupIds to the new permanent value.
  • extras/queue-manager-replicated/tests-single-instance/pom.xml
    • Updated parent groupId and all dependency groupIds to the new permanent value.
  • extras/task-store-database-jpa/README.md
    • Updated dependency example to use the new groupId.
  • extras/task-store-database-jpa/pom.xml
    • Updated parent groupId to the new permanent value.
  • http-client/pom.xml
    • Updated parent groupId to the new permanent value.
  • integrations/microprofile-config/README.md
    • Updated dependency example to use the new groupId.
  • integrations/microprofile-config/pom.xml
    • Updated parent groupId to the new permanent value.
  • jsonrpc-common/pom.xml
    • Updated parent groupId to the new permanent value.
  • pom.xml
    • Updated the root project's groupId and several managed dependency groupIds to the new permanent value.
  • reference/common/pom.xml
    • Updated parent groupId to the new permanent value.
  • reference/grpc/pom.xml
    • Updated parent groupId to the new permanent value.
  • reference/grpc/src/main/java/io/a2a/server/grpc/quarkus/package-info.java
    • Updated dependency example in Javadoc to use the new groupId.
  • reference/jsonrpc/pom.xml
    • Updated parent groupId to the new permanent value.
  • reference/rest/pom.xml
    • Updated parent groupId to the new permanent value.
  • reference/rest/src/main/java/io/a2a/server/rest/quarkus/package-info.java
    • Updated dependency example in Javadoc to use the new groupId.
  • server-common/pom.xml
    • Updated parent groupId to the new permanent value.
  • spec-grpc/pom.xml
    • Updated parent groupId to the new permanent value.
  • spec/pom.xml
    • Updated parent groupId to the new permanent value.
  • tck/pom.xml
    • Updated parent groupId and several dependency groupIds to the new permanent value.
  • test-utils-docker/README.md
    • Updated dependency example to use the new groupId.
  • test-utils-docker/pom.xml
    • Updated parent groupId to the new permanent value.
  • tests/server-common/pom.xml
    • Updated parent groupId and several dependency groupIds to the new permanent value.
  • transport/grpc/pom.xml
    • Updated parent groupId and a dependency groupId to the new permanent value.
  • transport/jsonrpc/pom.xml
    • Updated parent groupId and several dependency groupIds to the new permanent value.
  • transport/rest/pom.xml
    • Updated parent groupId and several dependency groupIds to the new permanent value.
  • update-version.sh
    • Updated grep patterns and sed commands to reflect the new groupId for JBang files.
Ignored Files
  • Ignored by pattern: .github/workflows/** (1)
    • .github/workflows/create-github-release.yml
Activity
  • No specific human activity (comments, reviews) was provided in the context for this pull request.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request correctly updates the project's Maven groupId from the temporary io.github.a2asdk to the permanent org.a2aproject.sdk. The changes are extensive and appear to cover all necessary files, including POMs, documentation, and scripts. I've added a few suggestions to improve maintainability by replacing hardcoded groupId values with the ${project.groupId} property in several pom.xml files and using a variable in a shell script. This will make future refactoring easier.

</dependency>
<dependency>
<groupId>io.github.a2asdk</groupId>
<groupId>org.a2aproject.sdk</groupId>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

For consistency with other dependencies in this file, it would be better to use ${project.groupId} instead of hardcoding org.a2aproject.sdk.

Suggested change
<groupId>org.a2aproject.sdk</groupId>
<groupId>${project.groupId}</groupId>

<dependencies>
<dependency>
<groupId>io.github.a2asdk</groupId>
<groupId>org.a2aproject.sdk</groupId>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

For consistency with other dependencies in this file, it would be better to use ${project.groupId} instead of hardcoding org.a2aproject.sdk.

Suggested change
<groupId>org.a2aproject.sdk</groupId>
<groupId>${project.groupId}</groupId>

</dependency>
<dependency>
<groupId>io.github.a2asdk</groupId>
<groupId>org.a2aproject.sdk</groupId>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

For consistency, it would be better to use ${project.groupId} instead of hardcoding org.a2aproject.sdk.

Suggested change
<groupId>org.a2aproject.sdk</groupId>
<groupId>${project.groupId}</groupId>

Comment on lines 193 to 227
<dependency>
<groupId>io.github.a2asdk</groupId>
<groupId>org.a2aproject.sdk</groupId>
<artifactId>a2a-java-sdk-opentelemetry</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.github.a2asdk</groupId>
<groupId>org.a2aproject.sdk</groupId>
<artifactId>a2a-java-sdk-opentelemetry-spring</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.github.a2asdk</groupId>
<groupId>org.a2aproject.sdk</groupId>
<artifactId>a2a-java-sdk-opentelemetry-common</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.github.a2asdk</groupId>
<groupId>org.a2aproject.sdk</groupId>
<artifactId>a2a-java-sdk-opentelemetry-client</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.github.a2asdk</groupId>
<groupId>org.a2aproject.sdk</groupId>
<artifactId>a2a-java-sdk-opentelemetry-server</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.github.a2asdk</groupId>
<groupId>org.a2aproject.sdk</groupId>
<artifactId>a2a-java-sdk-opentelemetry-client-propagation</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.github.a2asdk</groupId>
<groupId>org.a2aproject.sdk</groupId>
<artifactId>a2a-java-test-utils-docker</artifactId>
<version>${project.version}</version>
</dependency>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

For consistency with other dependencies in this file, it would be better to use ${project.groupId} instead of hardcoding org.a2aproject.sdk. This will make future changes to the groupId easier to manage.

            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>a2a-java-sdk-opentelemetry</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>a2a-java-sdk-opentelemetry-spring</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>a2a-java-sdk-opentelemetry-common</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>a2a-java-sdk-opentelemetry-client</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>a2a-java-sdk-opentelemetry-server</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>a2a-java-sdk-opentelemetry-client-propagation</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>a2a-java-test-utils-docker</artifactId>
                <version>${project.version}</version>
            </dependency>

Comment on lines +24 to 29
<groupId>org.a2aproject.sdk</groupId>
<artifactId>a2a-java-sdk-reference-grpc</artifactId>
</dependency>
<dependency>
<groupId>io.github.a2asdk</groupId>
<groupId>org.a2aproject.sdk</groupId>
<artifactId>a2a-java-sdk-reference-rest</artifactId>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

For consistency with other dependencies in this file, it would be better to use ${project.groupId} instead of hardcoding org.a2aproject.sdk.

Suggested change
<groupId>org.a2aproject.sdk</groupId>
<artifactId>a2a-java-sdk-reference-grpc</artifactId>
</dependency>
<dependency>
<groupId>io.github.a2asdk</groupId>
<groupId>org.a2aproject.sdk</groupId>
<artifactId>a2a-java-sdk-reference-rest</artifactId>
<groupId>${project.groupId}</groupId>
<artifactId>a2a-java-sdk-reference-grpc</artifactId>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>a2a-java-sdk-reference-rest</artifactId>

<dependencies>
<dependency>
<groupId>io.github.a2asdk</groupId>
<groupId>org.a2aproject.sdk</groupId>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

For consistency with other dependencies in this file, it would be better to use ${project.groupId} instead of hardcoding org.a2aproject.sdk.

Suggested change
<groupId>org.a2aproject.sdk</groupId>
<groupId>${project.groupId}</groupId>

Comment on lines 21 to 37
<dependency>
<groupId>io.github.a2asdk</groupId>
<groupId>org.a2aproject.sdk</groupId>
<artifactId>a2a-java-sdk-server-common</artifactId>
</dependency>
<dependency>
<groupId>io.github.a2asdk</groupId>
<groupId>org.a2aproject.sdk</groupId>
<artifactId>a2a-java-sdk-spec-grpc</artifactId>
</dependency>
<dependency>
<groupId>io.github.a2asdk</groupId>
<groupId>org.a2aproject.sdk</groupId>
<artifactId>a2a-java-sdk-spec</artifactId>
</dependency>
<dependency>
<groupId>io.github.a2asdk</groupId>
<groupId>org.a2aproject.sdk</groupId>
<artifactId>a2a-java-sdk-jsonrpc-common</artifactId>
<version>${project.version}</version>
</dependency>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

For consistency with other dependencies in this file, it would be better to use ${project.groupId} instead of hardcoding org.a2aproject.sdk.

Suggested change
<dependency>
<groupId>io.github.a2asdk</groupId>
<groupId>org.a2aproject.sdk</groupId>
<artifactId>a2a-java-sdk-server-common</artifactId>
</dependency>
<dependency>
<groupId>io.github.a2asdk</groupId>
<groupId>org.a2aproject.sdk</groupId>
<artifactId>a2a-java-sdk-spec-grpc</artifactId>
</dependency>
<dependency>
<groupId>io.github.a2asdk</groupId>
<groupId>org.a2aproject.sdk</groupId>
<artifactId>a2a-java-sdk-spec</artifactId>
</dependency>
<dependency>
<groupId>io.github.a2asdk</groupId>
<groupId>org.a2aproject.sdk</groupId>
<artifactId>a2a-java-sdk-jsonrpc-common</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>a2a-java-sdk-server-common</artifactId>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>a2a-java-sdk-spec-grpc</artifactId>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>a2a-java-sdk-spec</artifactId>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>a2a-java-sdk-jsonrpc-common</artifactId>
<version>${project.version}</version>
</dependency>

Comment on lines 21 to 37
<dependency>
<groupId>io.github.a2asdk</groupId>
<groupId>org.a2aproject.sdk</groupId>
<artifactId>a2a-java-sdk-server-common</artifactId>
</dependency>
<dependency>
<groupId>io.github.a2asdk</groupId>
<groupId>org.a2aproject.sdk</groupId>
<artifactId>a2a-java-sdk-spec-grpc</artifactId>
</dependency>
<dependency>
<groupId>io.github.a2asdk</groupId>
<groupId>org.a2aproject.sdk</groupId>
<artifactId>a2a-java-sdk-spec</artifactId>
</dependency>
<dependency>
<groupId>io.github.a2asdk</groupId>
<groupId>org.a2aproject.sdk</groupId>
<artifactId>a2a-java-sdk-jsonrpc-common</artifactId>
<version>${project.version}</version>
</dependency>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

For consistency with other dependencies in this file, it would be better to use ${project.groupId} instead of hardcoding org.a2aproject.sdk.

Suggested change
<dependency>
<groupId>io.github.a2asdk</groupId>
<groupId>org.a2aproject.sdk</groupId>
<artifactId>a2a-java-sdk-server-common</artifactId>
</dependency>
<dependency>
<groupId>io.github.a2asdk</groupId>
<groupId>org.a2aproject.sdk</groupId>
<artifactId>a2a-java-sdk-spec-grpc</artifactId>
</dependency>
<dependency>
<groupId>io.github.a2asdk</groupId>
<groupId>org.a2aproject.sdk</groupId>
<artifactId>a2a-java-sdk-spec</artifactId>
</dependency>
<dependency>
<groupId>io.github.a2asdk</groupId>
<groupId>org.a2aproject.sdk</groupId>
<artifactId>a2a-java-sdk-jsonrpc-common</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>a2a-java-sdk-server-common</artifactId>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>a2a-java-sdk-spec-grpc</artifactId>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>a2a-java-sdk-spec</artifactId>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>a2a-java-sdk-jsonrpc-common</artifactId>
<version>${project.version}</version>
</dependency>

# Find all files to update
POM_FILES=$(find . -type f -name "pom.xml" | sort)
JBANG_FILES=$(find . -type f -name "*.java" -path "*/examples/*" -exec grep -l "//DEPS io.github.a2asdk:" {} \; | sort)
JBANG_FILES=$(find . -type f -name "*.java" -path "*/examples/*" -exec grep -l "//DEPS org.a2aproject.sdk:" {} \; | sort)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The groupId org.a2aproject.sdk is hardcoded in multiple places in this script (lines 47, 72, 74, 110, 113, 116). It would be better to define it as a variable at the top of the script to improve maintainability. For example:

GROUP_ID="org.a2aproject.sdk"
...
JBANG_FILES=$(find . -type f -name "*.java" -path "*/examples/*" -exec grep -l "//DEPS $GROUP_ID:" {} \; | sort)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We're not going to change it again

@kabir kabir merged commit aa62eb6 into a2aproject:main Mar 16, 2026
13 of 17 checks passed
jmesnil added a commit to jmesnil/a2a-tck that referenced this pull request Mar 17, 2026
Reflects the groupId change in a2aproject/a2a-java#750. Updates the
codegen template, emitter, generated SUT sources, and test paths to
use org.a2aproject.sdk consistently.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants