Skip to content

feat(java): append versions.txt on add - #6653

Merged
noahdietz merged 22 commits into
googleapis:mainfrom
noahdietz:java-add-version-txt
Jul 10, 2026
Merged

feat(java): append versions.txt on add#6653
noahdietz merged 22 commits into
googleapis:mainfrom
noahdietz:java-add-version-txt

Conversation

@noahdietz

@noahdietz noahdietz commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Moves the extension of the Java monorepo versions.txt file out of librarian generate and into librarian add. When a completely new API is onboarded with librarian add all relevant artifacts are appended to versions.txt. When a new API path for an existing library entry is onboarded, only the necessary artifacts (those that do not already appear in versions.txt) are appended to versions.txt.

This eliminates one of the post-generate steps implemented in librarian today. It also moves what is conceptually a one-time onboarding step into the purpose-built onboarding command. It does add some complexity to the Java add implementation as it now needs to do the following:

  1. fill out the library entry with Java defaults
  2. derive the artifact IDs
  3. read versions.txt, then append only new artifacts
  4. tidy the new library entry
  5. return

Example commit of adding a completely new API: noahdietz/google-cloud-java@2efbac6

Example commit of adding a new API path to an existing library: noahdietz/google-cloud-java@85e200b

Fixes #6527

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

Copy link
Copy Markdown
Contributor

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 refactors the Java library addition process to register artifact modules in versions.txt immediately during the Add phase rather than during the PostGenerate phase. This simplifies the generation pipeline and removes the need to track missing artifacts across generation steps. Feedback on the changes suggests optimizing the readExistingModules function in internal/librarian/java/add.go by using the bytes package directly on the read byte slice instead of converting the entire file content to a string, which will prevent unnecessary memory allocations.

Comment thread internal/librarian/java/add.go
Comment thread internal/librarian/java/add.go
@noahdietz
noahdietz marked this pull request as ready for review July 6, 2026 23:44
@noahdietz
noahdietz requested a review from a team as a code owner July 6, 2026 23:44
@noahdietz
noahdietz requested review from JoeWang1127 and zhumin8 July 6, 2026 23:44
Comment thread internal/librarian/java/add.go Outdated
Comment thread internal/librarian/java/add.go Outdated
@noahdietz
noahdietz requested a review from zhumin8 July 7, 2026 17:12
Comment thread internal/librarian/java/add.go
@noahdietz
noahdietz requested a review from zhumin8 July 8, 2026 17:39
Comment thread internal/librarian/java/add.go Outdated
Comment thread internal/librarian/java/add.go Outdated
@noahdietz
noahdietz requested a review from zhumin8 July 8, 2026 19:15
Comment thread internal/librarian/java/add.go Outdated
@noahdietz
noahdietz requested a review from zhumin8 July 8, 2026 21:44
Comment thread internal/librarian/java/add.go
Comment thread internal/librarian/java/add.go
Comment thread internal/librarian/java/add.go
Comment thread internal/librarian/java/add.go Outdated
Comment thread internal/librarian/java/add_test.go
Comment thread internal/librarian/java/add_test.go
Comment thread internal/librarian/java/add.go
@noahdietz
noahdietz merged commit 9e9e645 into googleapis:main Jul 10, 2026
31 checks passed
@noahdietz
noahdietz deleted the java-add-version-txt branch July 10, 2026 21:24
noahdietz pushed a commit that referenced this pull request Jul 13, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.26.0](v0.25.0...v0.26.0)
(2026-07-13)


### Features

* **internal/gem:** add gem package to install Ruby gem tools
([#6724](#6724))
([40ba6df](40ba6df))
* **internal/librarian/java:** add ApplyMoveActionsToLibrary helper and
unit tests
([#6731](#6731))
([f25bd33](f25bd33))
* **internal/librarian/java:** add RestructureToLibrary helper and unit
tests ([#6757](#6757))
([b2ff68c](b2ff68c)),
closes [#6516](#6516)
* **internal/librarian/java:** add ToKeepSet helper and unit tests
([#6730](#6730))
([df99304](df99304)),
closes [#6516](#6516)
* **internal/librarian/java:** integrate native Go postprocessor into
Java generator
([#6768](#6768))
([074059d](074059d)),
closes [#6516](#6516)
* **internal/librarian/java:** mark legacy postprocessing for
deprecation
([#6716](#6716))
([78a4ab6](78a4ab6)),
closes [#6516](#6516)
* **internal/librarian/nodejs:** use cache and bin directories for
nodejs install
([#6680](#6680))
([7f88869](7f88869))
* **internal/librarian/php:** add inital PHP client library generator
([#6703](#6703))
([9a45ab1](9a45ab1))
* **internal/librarian/php:** add tool installation directory helpers
([#6717](#6717))
([9cdf0b5](9cdf0b5)),
closes [#6630](#6630)
* **internal/librarian/ruby:** support installing Ruby gem dependencies
([#6751](#6751))
([bbce2c4](bbce2c4)),
closes [#6634](#6634)
* **internal/librarian:** add ruby tools directory to env output
([#6781](#6781))
([c220d71](c220d71))
* **internal/postprocessing:** add Apply pipeline runner and tests
([#6714](#6714))
([5cb8f66](5cb8f66)),
closes [#6516](#6516)
* **internal/postprocessing:** add ApplyMethodOperations batch runner
and tests ([#6698](#6698))
([8377d53](8377d53)),
closes [#6516](#6516)
* **internal/postprocessing:** add applyToFiles and RemoveFiles
([#6673](#6673))
([2f4b437](2f4b437)),
closes [#6516](#6516)
* **internal/postprocessing:** add CopyFiles batch runner and tests
([#6686](#6686))
([20c3a1a](20c3a1a))
* **internal/postprocessing:** add ReplaceAll and ReplaceRegexAll batch
runners and tests
([#6688](#6688))
([bb18f06](bb18f06))
* **internal/protoc:** add protoc installation and use installed
`protoc` in Java generation
([#6622](#6622))
([00ee24d](00ee24d))
* **internal/protoc:** add Run function
([#6699](#6699))
([cd8a1d4](cd8a1d4)),
closes [#6558](#6558)
* **internal/serviceconfig:** allowlist API paths for php
([#6789](#6789))
([7907686](7907686)),
closes [#6629](#6629)
* **internal/tool/gem:** verify input directories and tools before
installation
([#6778](#6778))
([3086d63](3086d63))
* **java:** append versions.txt on add
([#6653](#6653))
([9e9e645](9e9e645))
* **librarian/internal/config:** add php config
([#6701](#6701))
([939ae6f](939ae6f))
* **migrate:** discover and list PHP libraries during migration
([#6728](#6728))
([e552b89](e552b89))
* **sidekick/parser:** correct LRO poller service
([#6704](#6704))
([1d4b2d1](1d4b2d1))
* **sidekick/rust:** remove unstable gate for LRO tracing
([#6459](#6459))
([8266ce3](8266ce3))
* **sidekick/swift:** discovery LROs
([#6738](#6738))
([c294d15](c294d15))
* **sidekick/swift:** generate deprecation attributes
([#6750](#6750))
([145e8ae](145e8ae))
* **sidekick/swift:** traits with dependencies
([#6709](#6709))
([e8389f2](e8389f2))
* **swift:** add protobuf generation support
([#6697](#6697))
([3bebf26](3bebf26))
* **tool/cmd/migrate/php:** scaffold composer tools for php
([#6736](#6736))
([f23b451](f23b451))
* **tool/cmd/migrate:** add support to php
([#6726](#6726))
([586bac0](586bac0)),
closes [#6723](#6723)
* **tool/cmd/migrate:** support union versions in PHP OwlBot configs
([#6782](#6782))
([7690206](7690206)),
closes [#6779](#6779)


### Bug Fixes

* **internal/librarian/java:** remove excluded_poms from repometadata
([#6676](#6676))
([5e0f7f2](5e0f7f2))
* **internal/librarian/php:** enforce explicit API paths and add default
output path
([#6740](#6740))
([347bbd6](347bbd6))
* **internal/librarian:** preserve gem tools during tidy
([#6783](#6783))
([0150007](0150007))
* **internal/librarian:** preserve maven and protoc configuration during
tidy ([#6702](#6702))
([b439528](b439528)),
closes [#6558](#6558)
* **internal/snippetmetadata:** disable HTML escaping in JSON output
([#6777](#6777))
([4da5e28](4da5e28)),
closes [#6776](#6776)
* **librarian/rust:** detect inconsistent repos
([#6766](#6766))
([82ce5a9](82ce5a9))
* **sidekick/swift:** missing enum value docs
([#6727](#6727))
([e9020d2](e9020d2))
* **tool/cmd/migrate:** populate API paths from .OwlBot.yaml during
migrate for php
([#6739](#6739))
([6a15260](6a15260))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.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.

java: move logic that updates versions.txt from generate to add

3 participants