sofastack / sofa-ark

SOFAArk is a light-weight,java based classloader isolation framework.
https://www.sofastack.tech/projects/sofa-boot/sofa-ark-readme/
Apache License 2.0
1.56k stars 496 forks source link

DeclaredMode: 准确提取 jar 的 identity #615

Open lvjing2 opened 1 year ago

lvjing2 commented 1 year ago

Your question

如该 milestone 所描述,declaredMode 还存在如下的不完善地方,需要解决 https://github.com/sofastack/sofa-ark/milestone/21 image

这里解决其中第三个问题

从基座里查找出来的依赖,需要判断是否是模块里声明的逻辑在 isDeclared() 内,需要准确提取出 jar 里的 groupdId + artifactId, 但当前只提取了 artifactId, 如果基座和模块里有 groupId 不同 artifactId 相同的依赖,会被误认为也是允许委托加载的。

Actions

  1. 提取 artifaceId, 部分从 jar 名字和 pom.properties 都提取不出 artifactId 的能否有方式提取出。
  2. 提取出 jar 的 groupId
  3. 根据 groupId + artifactId 来判断该依赖在模块中是否声明,是否可以从基座中委托加载。
lylingzhen commented 1 year ago

@sususama 这个 Issue 也是你正在看吗?

sususama commented 1 year ago

@sususama 这个 Issue 也是你正在看吗?

我在看,但是还没有解决思路

WindSearcher commented 1 year ago

我试试看看哈

sususama commented 11 months ago

模仿ark里面提取artifactID的方法来同样提取groupID,但是sofaark的打包模式下只将artifactId进行打包,需要将GroupID也放入打好的Jar包中就可以提取出来,我卡在了改变sofaArk的打包方式。 com.alipay.sofa.ark.boot.mojo.RepackageMojo#getAllArtifact 改变打包的代码