我在我的 osgi 应用程序中使用 querydsl 库。工件 querydsl-jpa 具有 hibernate-jpa-2.0-api 作为依赖项。
我在 pom.xml 中添加了这样的排除项,因为我不使用休眠。仍然当我尝试启动我的服务(通过 karaf features.xml 文件)时,我得到了这个:
执行命令时出错:无法在功能 querydsl-jpa-2.5.0 中启动捆绑 mvn:com.mysema.querydsl/querydsl-jpa/2.5.0:捆绑 com.mysema.querydsl.jpa [223] 中未解决的约束:无法解析 223.0:缺少要求 [223.0] 包;(&(package=org.hibernate)(版本>=3.6.8.Final))
mvn project dependency:tree 不返回任何休眠依赖项。这是否意味着即使明确排除了依赖项,osgi 依赖项也仅由 querydsl 包的清单文件确定?
<dependency>
<groupId>com.mysema.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
<version>2.5.0</version>
<exclusions>
<exclusion>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
</exclusion>
</exclusions>
</dependency>
以及 features.xml 的摘录
<feature name='querydsl-jpa' version='2.5.0'>
<bundle>mvn:org.apache.felix/org.osgi.compendium/1.4.0</bundle>
<bundle>mvn:org.apache.geronimo.specs/geronimo-jpa_2.0_spec/1.1</bundle>
<bundle>mvn:com.mysema.querydsl/querydsl-core/2.5.0</bundle>
<bundle>mvn:com.mysema.commons/mysema-commons-lang/0.2.2</bundle>
<bundle>mvn:com.mysema.querydsl/querydsl-sql/2.5.0</bundle>
<bundle>mvn:com.mysema.querydsl/querydsl-jpa/2.5.0</bundle>
</feature>