我想从驻留在 Maven Central 上的 OSGI 包生成一个 P2 存储库。 我有

  1. 使用 dependencies=consider 定义了一个 POM 优先的特性项目
  2. 使用 compile 范围和 jar 类型定义 Maven 依赖项
  3. 定义了一个 feature.xml,其中精确引用了在其 manifest.mf 中声明的包符号名称和版本

当我尝试构建该功能时,我收到

No solution found because the problem is unsatisfiable.": ["Unable to satisfy dependency from org.codehaus.jackson.feature.group 1.9.1.qualifier to jackson-mapper-lgpl [1.9.12,1.9.13).", "Unable to satisfy dependency from org.codehaus.jackson.feature.group 1.9.1.qualifier to jackson-core-lgpl [1.9.12,1.9.13).", "No solution found because the problem is unsatisfiable."]  

org.codehaus.jackson.feature 是我正在构建的功能,jackson-mapper-lgpl [1.9.12,1.9.13) jackson-core-lgpl [1.9.12,1.9.13) 是我要包含的 OSGI 包的规范。

当我打开 Debug模式时,我看到正在找到组件,这使得行为更加奇怪:

[DEBUG] P2Resolver: artifact org.codehaus.jackson:jackson-core-lgpl:1.9.12 at location /home/jsuess/.m2/repository/org/codehaus/jackson/jackson-core-lgpl/1.9.12/jackson-core-lgpl-1.9.12.jar resolves installable unit jackson-core-lgpl/1.9.12 
[DEBUG] P2resolver.addMavenArtifact org.codehaus.jackson:jackson-mapper-lgpl:jar:1.9.12:compile 
[DEBUG] P2Resolver: artifact org.codehaus.jackson:jackson-mapper-lgpl:1.9.12 at location /home/jsuess/.m2/repository/org/codehaus/jackson/jackson-mapper-lgpl/1.9.12/jackson-mapper-lgpl-1.9.12.jar resolves installable unit jackson-mapper-lgpl/1.9.12 
[DEBUG] Registered artifact repository org.eclipse.tycho.repository.registry.facade.RepositoryBlackboardKey(uri=file:/resolution-context-artifacts@/home/jsuess/workspace/org.codehaus.jackson/features/org.codehaus.jackson) 

我相信从 maven 中获取包并创建 P2 一定是一个常见的用例,所以我想知道是否有人可以向我指出一个我可以用作模板的工作示例 POM。

请您参考如下方法:

请注意,Tycho 构建中的每个模块都有一个单独的目标平台。

因此,如果您正在使用 pomDependencies=consider,但您仅配置此开关和/或对 eclipse-feature 模块的依赖项,则 POM 依赖项将仅是在模块的目标平台中。如果您随后尝试将该功能打包到 eclipse-repository 中,该模块的依赖项解析将失败,因为缺少该功能的(传递)依赖项。

在大多数情况下,每个模块不需要不同的目标平台,所以一般来说你应该把所有的target platform configuration和 POM 依赖项到父 POM 中。


如果您已这样做,但您的模块之一似乎仍然具有不同的目标平台,请确保该模块的父 POM 引用是正确的 - 并且您没有引用父 POM 的旧版本.


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!