Comments (5)
That is a good feature request. It will require classpath isolation though, not a very trivial problem to solve.
from butterfly.
Yes, this issue is for allowing more dependencies to be easily added.
Classloader isolation will be done in a separate issue / pull request.
from butterfly.
So, you mentioned classpath isolation will be done in a separated PR. With the current changes you provided, what happens if there are two extensions installed, and they both use the same library, but in different versions? Wouldn't that cause a conflict?
from butterfly.
With current changes: yup, there would be a conflict if the extension brought in a mismatched version of an existing dependency. It'd just be like placing inconsistent jars on the classpath. The first jar would win and the class would be loaded from there. There is a chance of linkage errors like NoSuchMethodError being thrown.
(In fact, I think butterfly itself has internally inconsistent dependencies. The build should be configured with maven dependency convergence rule or its gradle equivalent
The intent here with this pull request is that the extension can more easily add additional dependencies by dropping a single jar. The extension creator or butterfly deployer still has to be careful in ensuring consistent dependencies.
With classloader isolation later on, hopefully such problems can be reduced.
from butterfly.
Ok, thanks.
from butterfly.
Related Issues (20)
- In some edge cases, log of exception stack trace is emitted by JavaParser which is used by Butterfly JavaMatch HOT 1
- Question about extensions & roadmap HOT 3
- Butterfly should allow numbers in the extension property names HOT 15
- Butterfly CLI should allow escaped semicolons and equals as extension property value when passed using -p HOT 6
- Guava library must be updated to version 24.1.1 (or later) due to security vulnerabilities HOT 1
- Update test case ButterflyFacadeImplTest HOT 3
- Upgrade libraries to latest version
- Add an operation to remove an exclusion from a Maven dependency
- Upgrade log4j to version 2.16.0 HOT 1
- Upgrade log4j to version 2.17.0
- Upgrade log4j to version 2.17.1
- Upgrade zip4j library from 2.8.0 to 2.9.1 HOT 1
- FindFiles files has a bug introduced in #375 HOT 1
- Upgrade dependencies to latest version HOT 1
- Upgrade dependencies to latest version HOT 1
- Fix Temporary File Information Disclosure Vulnerability
- Update woodstox and zip4j to fix security vulnerabilities HOT 1
- Include condition to check if POM XML has specific profile HOT 1
- Upgrading Spring, Spring Boot and other select libraries HOT 1
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 butterfly.