Java 用于与Pax考试集成测试的动态引用捆绑包

Java 用于与Pax考试集成测试的动态引用捆绑包,java,maven,osgi,declarative-services,pax-exam,Java,Maven,Osgi,Declarative Services,Pax Exam,我已经创建了一个,并希望改进集成测试所需捆绑包的供应 现在,bundle是通过文件名静态引用的,使用的是corepoptions.bundle(“reference:file:+),因此问题是,当jar的名称更改时(例如,由于版本更改),测试将在将来某个时候失败 是否有更好的方法来部署所需的依赖项?可能使用符号名或组/工件id @RunWith(PaxExam.class) public class ServiceTestCase { @Inject private Servi

我已经创建了一个,并希望改进集成测试所需捆绑包的供应

现在,bundle是通过文件名静态引用的,使用的是
corepoptions.bundle(“reference:file:+)
,因此问题是,当jar的名称更改时(例如,由于版本更改),测试将在将来某个时候失败

是否有更好的方法来部署所需的依赖项?可能使用符号名或组/工件id

@RunWith(PaxExam.class)
public class ServiceTestCase {

    @Inject
    private Service service;

    @Configuration
    public Option[] config() {
        return CoreOptions.options(
                /* needed for ds annotations */
                CoreOptions.mavenBundle("org.apache.felix", "org.apache.felix.scr", "1.8.2"),
                CoreOptions.bundle("reference:file:../service/target/service-0.0.1-SNAPSHOT.jar"),
                CoreOptions.bundle("reference:file:../service.impl/target/service.impl-0.0.1-SNAPSHOT.jar"),
                CoreOptions.junitBundles());
    }

    @Test
    public void testInjections() {
        Assert.assertNotNull(service);
    }
}

您的项目是一个maven项目,它捆绑了maven工件。最好使用
mavenBundle
references:

  • 在测试的pom中引用这些依赖项
  • 使用
    depends-maven插件
    生成具有依赖项版本的属性文件:

    <plugin>
        <groupId>org.apache.servicemix.tooling</groupId>
        <artifactId>depends-maven-plugin</artifactId>
        <version>1.2</version>
        <executions>
            <execution>
                <id>generate-depends-file</id>
                <phase>generate-resources</phase>
                <goals>
                    <goal>generate-depends-file</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
    

  • 您的项目是一个maven项目,捆绑maven工件。最好使用
    mavenBundle
    references:

  • 在测试的pom中引用这些依赖项
  • 使用
    depends-maven插件
    生成具有依赖项版本的属性文件:

    <plugin>
        <groupId>org.apache.servicemix.tooling</groupId>
        <artifactId>depends-maven-plugin</artifactId>
        <version>1.2</version>
        <executions>
            <execution>
                <id>generate-depends-file</id>
                <phase>generate-resources</phase>
                <goals>
                    <goal>generate-depends-file</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
    

  • 谢谢你的回答。对于测试pom中的依赖项,我应该使用什么范围?提供?测试范围,但老实说,这并不重要。pax考试将提供一个新的容器,考试的类路径将不被使用。谢谢。从命令行开始,一切正常。Eclipse正在抱怨,尽管:
    插件执行不在生命周期配置中:org.apache.servicemix.tooling:depends maven插件:1.2:generate depends file(执行:generate depends file,阶段:generate resources)
    你知道这方面的一些事情吗?那只是eclipse,它不知道关于
    依赖maven插件的任何事情,也不知道该做什么。你可以告诉它忽略这个插件。谢谢你的回答。对于测试pom中的依赖项,我应该使用什么范围?提供?测试范围,但老实说,这并不重要。pax考试将提供一个新的容器,考试的类路径将不被使用。谢谢。从命令行开始,一切正常。Eclipse正在抱怨,尽管:
    插件执行不在生命周期配置中:org.apache.servicemix.tooling:depends maven插件:1.2:generate depends file(执行:generate depends file,阶段:generate resources)
    你知道这方面的一些事情吗?那只是eclipse,它不知道关于
    依赖maven插件的任何事情,也不知道该做什么。你可以告诉它忽略这个插件。