Java 由于Tycho';重新包装';,导致安全性异常

Java 由于Tycho';重新包装';,导致安全性异常,java,maven,xtext,tycho,exec-maven-plugin,Java,Maven,Xtext,Tycho,Exec Maven Plugin,在我的Maven/Tycho构建中,我有一个exec Maven插件,由于org.eclipse.emf.common包中的签名者信息不匹配而导致SecurityException失败。exec maven插件的执行取决于两个工件(实际上更多,但我认为它们与此问题无关): 然后,在执行上述任务时,两个JAR都包含在内,因此将org.eclipse.emf.common包添加到类路径中两次: [DEBUG] Adding plugin dependency artifact: org.eclips

在我的Maven/Tycho构建中,我有一个exec Maven插件,由于
org.eclipse.emf.common
包中的签名者信息不匹配而导致SecurityException失败。exec maven插件的执行取决于两个工件(实际上更多,但我认为它们与此问题无关):

然后,在执行上述任务时,两个JAR都包含在内,因此将
org.eclipse.emf.common
包添加到类路径中两次:

[DEBUG] Adding plugin dependency artifact: org.eclipse.emf.common to classpath
...
[DEBUG] Adding plugin dependency artifact: org.eclipse.emf.common to classpath
这将导致上述SecurityException:

java.lang.SecurityException: class "org.eclipse.emf.common.notify.impl.BasicNotifierImpl$EScannableAdapterList"'s signer information does not match signer information of other classes in the same package
这大概是因为上面描述的重新打包步骤

我能做些什么来避免这种冲突


结束说明:这是一个维护流的构建,上次在7月份运行时,它成功运行。从那时起,只有一个小的代码更改不会影响依赖关系。然而,org.eclipse.emf.common的2.15.0版本是在9月份发布的。在此之前,2.12.x是最新版本。xtext使用[2.10.0,3),解析为2.15.0。我们工件的目标平台只包括2.12.0。当然,现在要尝试的一件事是将目标平台也移动到2.15.0,但我不愿意这样做,因为正如我所说,这是一个维护流,应该只接受必要的错误修复。

在这种情况下,您可以使用排除并将包从工件/包中排除,如下所示

 <dependency>
     <groupId>my.group</groupId>
     <artifactId>my.group.artifact</artifactId>
     <version>1.8.6-SNAPSHOT</version>
     <exclusions>
         <exclusion>
             <groupId>org.eclipse.emf</groupId>
             <artifactId>org.eclipse.emf.common</artifactId>
         </exclusion>
     </exclusions>
 </dependency>

我的团队
我的神器
1.8.6-快照
org.eclipse.emf
org.eclipse.emf.common

在这个场景中,您可以使用exclusion并将包从工件/包中排除,如下所示

 <dependency>
     <groupId>my.group</groupId>
     <artifactId>my.group.artifact</artifactId>
     <version>1.8.6-SNAPSHOT</version>
     <exclusions>
         <exclusion>
             <groupId>org.eclipse.emf</groupId>
             <artifactId>org.eclipse.emf.common</artifactId>
         </exclusion>
     </exclusions>
 </dependency>

我的团队
我的神器
1.8.6-快照
org.eclipse.emf
org.eclipse.emf.common

这并没有真正起作用,但它引导我走上了正确的道路。即使我从
my.group.artifact
中排除
org.eclipse.emf:org.eclipse.emf.common
,它仍然会被xtext拉入。然后我尝试排除该包的Tycho版本,即
p2.eclipse插件:org.eclipse.emf.common
。这修复了安全问题异常问题,但暴露了与版本相关的其他问题。其他p2.eclipse-plugin依赖项屏蔽了org.eclipse.emf中的较新版本。我必须将排除项扩展到
p2.eclipse-plugin:
,以使其正常工作。这确实不起作用,但它引导我走上了正确的道路。即使我排除
org.eclipse.emf:org.eclipse.emf.common
my.group.artifact
中,它仍将由xtext拉入。然后我尝试排除该包的Tycho版本,即
p2.eclipse plugin:org.eclipse.emf.common
。这修复了SecurityException问题,但暴露了与版本相关的其他问题。其他p2.eclipse-plugin依赖项屏蔽了新版本我必须将排除项扩展到
p2.eclipse插件:
,才能让它正常工作。
 <dependency>
     <groupId>my.group</groupId>
     <artifactId>my.group.artifact</artifactId>
     <version>1.8.6-SNAPSHOT</version>
     <exclusions>
         <exclusion>
             <groupId>org.eclipse.emf</groupId>
             <artifactId>org.eclipse.emf.common</artifactId>
         </exclusion>
     </exclusions>
 </dependency>