Comments (1)
In general, I think doing class rather than package based resolution where we can makes sense. I say where we can because we can't always reliably do so, the major exceptions that come to mind are:
- Generated code - both from things like annotation processers, and from things like protoc - we can't reliably know what classes some code may generate.
- Third party libraries - we rely on rules_jvm_external's lockfile which indexes a list of packages (e.g. in this example) - while we could have rules_jvm_external list out every class in every jar, that would make the lockfile huge (and also very churn-y when versions change).
Right now in our code, we treat packages and classes interchangeably quite often - #153 is a step towards not doing that so much - it introduces specific types for packages and classes, and makes clear where each is being used. It also documents that this gazelle plugin assumes quite strongly that people follow standard java naming conventions. Once that lands, I think being able to support class-specific resolves, even without doing general class-based resolution and keeping with packages as the primary resolution key, would be quite simple.
from rules_jvm.
Related Issues (20)
- Failed to find javaparser in runfiles HOT 16
- Fetching dependencies for JUnit5 runner tries to use local java HOT 1
- Allow setting SecurityManager
- Support exclusions in addition to test_suffixes in java_test_suite HOT 1
- Can't clone it in our windows kokoro jobs HOT 1
- Duplicate artifacts versions
- Checkstyle tests don't work with a generated checkstyle.xml HOT 2
- Cannot be used with `--override_repository`: cannot load '@@rules_java//java:repositories.bzl': no such file HOT 2
- Not able to download contrib_rules_jvm via bzlmod......failing to resolve transitive dependencies HOT 1
- No maven lockfile for bzlmod
- java_test_suite silently drops `data` HOT 2
- SpotBugs targets fail when we have more than one plugin in Unix-like systems
- Gazelle fails on Windows with "javaparser/generators/Main: file does not exist"
- Gazelle fails on Windows with "panic: runtime error: invalid memory address or nil pointer dereference"
- Gazelle fails on Windows with "java.nio.file.InvalidPathException: Illegal char <:> at index 2" HOT 1
- Run gazelle tests on CI on Windows
- srcs is updated with the OS-specific path separator
- Re-add tests for "missing maven_install.json leads to a useful warning" case
- Don't fail silently when running a junit4 test in junit5 test suite w/o vintage HOT 1
- Sharding does not work with ParametrizedTest in java_junit5_test
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rules_jvm.