sap jco 连接器的当前版本在运行时强制使用包含 jar 的名称。如果它与名称 (sapjco3.jar) 不匹配,这将导致异常。
JCo 初始化失败,出现 java.lang.ExceptionInInitializerError: Illegal JCo archive "sap-jco-win-amd-64-3.0.11.jar"。不允许重命名或重新打包原始存档“sapjco3.jar”
我们包装了这些库,并在我们的 nexus 存储库中使用自定义 pom 部署它们。由于此更改/命名工件的标准 maven 方式,标准 maven 构建无法使用 atm。
当前的解决方法使用此依赖项的系统范围并将 sapjco maven 工件复制到项目中的指定文件夹,因为这是强制执行 jar 文件的名称并将其作为依赖项保留在构建中的唯一方法。这在同一个模块中工作。系统范围的缺点之一是传递工件的停用/失败解析。我们需要它,因为 sap 连接器模块包含在应用程序战争模块中。由于系统范围依赖项不包含在打包的工件中,我们必须将它们复制到 web-inf/lib 文件夹并在清单中添加一个类路径条目。
构建工作,当我从父/根模块启动它时,但由于系统范围依赖性,当它在子模块中启动时失败。我们现在可以接受该解决方案,但我绝对不满意。
是否有推荐的方法将 sapjco 与 maven 一起使用,或者使用更简单的方法来生成依赖于平台的工件,其中包括本机库和具有指定名称的 jar?SAP 是否会重新考虑这项检查,因为以前的版本不包括它?
编辑: