Add better support for generated resources

Open
#275 9 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

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

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.

Description

P3

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 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 😔.

Dominant language
Starlark
Stars
103
Forks
102
PR merge metrics
No merged PRs in 30d

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from bazelbuild/rules_java

All issues in bazelbuild/rules_java

Similar issues

More Build System issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.