Comments (7)
Absolutely @big-guy I can do that. In fact I already prototyped it to prove it works and patch internally as an experiment. So, it would be easy to make it happen.
I can also add the suggested optimization to only resolve the file path if there is a potential pattern match with groovy
in the file name as this is definitively the use case we have, we retain the groovy
part just all others are mutated in the symlink. The target of course is the source of truth.
from gradle.
There is a potential performance problem of requesting a real path, because the method is invoked for every library in the classpath. Probably it can be resolved with two levels of checks, limiting the real path resolution to only something that has groovy
in its filename. Would it work in your use case?
from gradle.
Good point and yes, that would work. Our naming conventions happen to keep the groovy
name but other aspects including version numbers and group are twisted. The ideal option is to have the resolved symlink for the names that are likely to be candidates.
from gradle.
The issue is in the backlog of the relevant team and is prioritized by them.
from gradle.
@Alex-Vol-Amz would you be interested in submitting your change as a PR?
The real fix for this would be to remove the need for GroovyJarFile entirely, but this is a deeper change to the way the Groovy plugin works.
from gradle.
@Alex-Vol-Amz we can see if the performance impact as you have it is a big deal with our tests. You can just submit what you have plus an integ test.
from gradle.
I posted the working PR with unit tests. I have not come up with a clever way to simulate this environment in an integration test yet. If you think an integration test is a must have I will try to work out the detail. I may end up using the mechanism I did for the example project that reproduced the issue on the description of this bug.
from gradle.
Related Issues (20)
- `@OptionValues` annotation doesn't support lazy values as a return type
- Lazier MavenPublication pom configuration HOT 1
- Maven artifact version catalogs do not support snapshot versions HOT 2
- Mention `:configuration-cache` types moving to `internal` package in the upgrade guide
- Auto-detection of installed toolchains by mise
- Consider Setting Console CP to UTF-8 on Windows to enable UTF-8 Console Output HOT 1
- Explain how test suites can access test fixtures
- Add Provider.orElse(Callable) HOT 1
- support test fixtures per test suite HOT 2
- Simplify writing custom interceptors for upgraded properties HOT 2
- Configuration cache: Cannot set the value of a property of type [...].Configuration using a provider of type [...].DefaultFileCollectionFactory$ResolvingFileCollection HOT 2
- If local distribution zip was modified, use updated distribution contents HOT 4
- I can see module and gradle is configured to add the gradle module metadata HOT 1
- Gradle classes leak into compilation when no dependencies declared
- Isolated Projects dogfooding HOT 1
- Using `gradle init` in a subdirectory of an existing build fails with unactionable error HOT 1
- The documentation search has stale entries HOT 1
- java.util.concurrent.ExecutionException: org.gradle.api.GradleException: Failed to create Jar file HOT 2
- Investigate potential unification of lazy types around single concept
- Resolving two capabilities of the same module fails if they have different category attributes HOT 2
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 gradle.