sofastack / sofa-jarslink

Jarslink is a sofa ark plugin used to manage multi-application deployment
Apache License 2.0
3.04k stars 706 forks source link

提议 #6

Closed cpthack closed 6 years ago

cpthack commented 6 years ago

1、需要类似springboot有一套特有打包机制(参考springboot-loader),利于开发过程调试、上线构建; 2、模块独立化已经实现,实际开发过程中的依赖包管理问题尚在,需要额外考虑; 3、模块依赖需要自动发现,可以参考springboot的自动扫描加载机制,简单的添加到maven pom文件依赖,并自动从当前classpath扫描加载即可; 4、业务场景问题,感觉目前需要此应用的场景基本集中在移动端APP开发,对于服务端场景,本身热升级不是特别困难的事情,不需要牺牲开发效率去满足。

总结:实际上springboot1.5.x目前已有功能基本满足模块化开发,唯独不足的是,目前springboot中的classloader没有提供特定API对外支持动态装载class,需要通过特定方式解决。

kiral commented 6 years ago

1:好的 2:这个没明白有什么问题,能详细说明下吗? 3:这个打包成一个FAT JAR就可以,我会写个文档出来。 4:热升级只是一个简单场景,这个可以解决把所有功能都迁移到模块中,服务器端用于解决集中式开发问题,比如后台功能,几十个人都需要在一个后台系统中开发后台功能,分支多, BUG互相影响,开发效率低。

cpthack commented 6 years ago

第2点的问题举例: (1)模块A,包含业务代码,自己需要依赖的服务、第三方jar等,需要有一套依赖管理方案; (2)模块B,需要依赖A,又如何管理?是RPC服务调用、还是本地jar依赖,同样需要依赖管理方案;

简而言之,既然做了模块化,但是模块自己及模块之间必然会存在一些依赖关系,如何以类似maven/gradle等的方式来更好管理依赖、构建模块,需要考虑这个问题。

ydcun commented 6 years ago

这个应该也是独立开的跟着各自模块走,不同模块依赖同种库的不同版本是正常情况

于佃存 中国科学院计算技术研究所

在 2018年2月23日,18:24,全中国只有一个成佩涛 notifications@github.com<mailto:notifications@github.com> 写道:

第2点的问题举例: (1)模块A,包含业务代码,自己需要依赖的服务、第三方jar等,需要有一套依赖管理方案; (2)模块B,需要依赖A,又如何管理?是RPC服务调用、还是本地jar依赖,同样需要依赖管理方案;

简而言之,既然做了模块化,但是模块自己及模块之间必然会存在一些依赖关系,如何以类似maven/gradle等的方式来更好管理依赖、构建模块,需要考虑这个问题。

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHubhttps://github.com/alibaba/jarslink/issues/6#issuecomment-367970188, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AEBoJxJ3MubJ_MLgjfZK93ChX_IkFGeXks5tXpHcgaJpZM4SIcAn.

cpthack commented 6 years ago

除了版本管理问题当然还有其他的jar依赖问题,这个是常规问题,这些都是需要来解决。