2015-02-04 3 views
0

Я знаю об этом ответе: Pax Exam: provisioning bundle with all dependencies Но мне кажется, что я делаю что-то неправильно, когда мне приходится включать пучки, которые являются частью связок, которые являются внешними по отношению к моему проект.Pax Экзамен: разрешение зависимостей проекта с расслоениями и обернутыми пакетами

Здесь ошибка я получаю:

java.lang.Exception: Could not start bundle wrap:mvn:org.apache.cxf/cxf-bundle-jaxrs/2.7.14 in feature(s) test-dependencies-0.0.0: Unresolved constraint in bundle org.apache.cxf.bundle-jaxrs [80]: Unable to resolve 80.0: missing requirement [80.0] osgi.wiring.package; (&(osgi.wiring.package=com.ctc.wstx.stax)(version>=4.4.0)(!(version>=5.0.0))) 

Вот мой код конфигурации для моего теста экзамена чел:

@Configuration 
public Option[] config() { 
    MavenArtifactUrlReference karafUrl = maven() 
     .groupId("org.apache.karaf") 
     .artifactId("apache-karaf") 
     .version(karafVersion()) 
     .type("tar.gz"); 
    MavenUrlReference karafStandardRepo = maven() 
     .groupId("org.apache.karaf.features") 
     .artifactId("standard") 
     .classifier("features") 
     .version(karafVersion()) 
     .type("xml"); 
    return new Option[] { 
     // KarafDistributionOption.debugConfiguration("5005", true), 
     karafDistributionConfiguration() 
      .frameworkUrl(karafUrl) 
      .unpackDirectory(new File("target/exam")) 
      .useDeployFolder(false), 
     keepRuntimeFolder(), 
     KarafDistributionOption.features(karafStandardRepo , "scr"), 

     //**Do I seriously need to do this?** 
     wrappedBundle(mavenBundle("org.codehaus.woodstox", "wstx-lgpl")).noStart(), 
     //**Why am I doing this?** 
     wrappedBundle(mavenBundle("org.apache.cxf", "cxf-bundle-jaxrs").version("2.7.14")).noStart(), 
     //**Some of my bundles use this so I guess this makes sense** 
     wrappedBundle(mavenBundle("org.apache.commons", "commons-lang3")), 
     mavenBundle("com.company.project", "common-core").versionAsInProject().start(), 
     mavenBundle("com.company.project", "common-properties", "1.3.1").start(), 
     mavenBundle("com.company.project", "rev-common-core", "1.3.1").start(), 
     mavenBundle("com.company.project", "rev-common-properties", "1.3.1").start(), 
     mavenBundle("com.company.project", "maintenance-core", "1.3.1").start(), 
    }; 
} 

Так что мои вопросы: почему я получаю ошибку о неразрешенные ограничения, нужно ли включать даже внешние пакеты и что мне нужно сделать, чтобы мои тесты запускались?

ответ

1

Да, вы должны включить все необходимые пакеты, контейнер Karaf пуст, вам необходимо предоставить все пакеты, необходимые в вашем тесте.

Вы можете создать функцию для модуля, который хотите протестировать, как способ предоставить все необходимые пакеты. Затем вы можете использовать его в своем тесте, например:

KarafDistributionOption.features("mvn:group/artifact-id/version/xml", "feature-name") 
+0

Мне пришлось добавить/функции после/xml, чтобы получить его, чтобы забрать мой проект локальных функций. Мне также пришлось включить несколько строк «имя-функции», поскольку каждый проект имеет несколько подпроектов. – Hardy