bazelbuild / bazelbuild/rules_java

Add better support for generated resources

Open
#275 9 comments 0 reactions 0 assignees View on GitHub
P3
Dominant language
Starlark
Stars
103
Forks
102
PR merge metrics
No merged PRs in 30d

Description

[`java_library.srcs`](https://bazel.build/reference/be/java#java_library.srcs) supports `.srcjar` files to facilitate including generated sources. `.properties` files included in `java_library.srcs` are filtered and included in `java_library.resources`. Consider extending the current behaviour so that `.properties` files included in `.srcjar` files are also included in `java_library.resources`. This will facilitate the usage of generated resources.

For example, I have a `genrule` that generates `.java` and `.properties` files and I don't necessarily know all of them during the analysis phase for declaration purposes. For this reason, my rule instead generates a `.srcjar` file. However, the `.properties` files inside that `.srcjar` file are being skipped.

There are other alternative ways of going about it:

- There's already an internal [`resource_jars`](https://github.com/bazelbuild/rules_java/blob/8.9.0/java/common/rules/impl/basic_java_library_impl.bzl#L95) field that could perhaps be reused for this effect (at the moment it seems to always be forced as empty)? However, straight including `.srcjar` files in this field won't achieve the desired outcome as this can result in `.java` files appearing inside the final `.jar` file. Maybe somehow expose this field to users?

- Support something like `.resourcejar` files in `java_library.resources`. This would be a breaking change :pensive:.

Contributor guide

Open the contributing guide

Research direction

Start by reading java/common/rules/impl/basic_java_library_impl.bzl around the resource_jars field and trace how java_library.srcs and java_library.resources handle generated inputs. Compare the proposed approaches and define the completed behavior as preserving Java sources while including .properties files found inside .srcjar outputs.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
build-system
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.