首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何指定用于paxexam的特性而不是maven工件?

如何指定用于paxexam的特性而不是maven工件?
EN

Stack Overflow用户
提问于 2017-10-24 19:28:31
回答 1查看 52关注 0票数 0

我在一个大型代码库上工作,它的构建生成了在Karaf中加载的OSGi包。我们有很多PaxExam测试。所有这些现有测试都通过maven GAV加载特性。

我想编写一个测试,它的唯一目的是验证所有所需的包加载。测试方法本身可能是空的。

我只想通过特性名称来指定要加载的特性,而不是通过与该特性关联的maven工件来指定。

例如,这里有一个现有的配置选项块,类似于其他测试中的所有其他块:

代码语言:javascript
复制
@Configuration
public Option[] config() {
    return new Option[] {
            karafDistributionConfiguration()
            .frameworkUrl(maven().groupId("org.apache.karaf").artifactId("apache-karaf").type("zip")
                    .versionAsInProject())
                    .useDeployFolder(false).unpackDirectory(new File("target/paxexam/unpack/")),
                    systemProperty("sl.config.dir").value("${karaf.etc}"),
                    features(maven().groupId("com.att.detsusl").artifactId("usl-servicefactory-impl").type("xml")
                            .classifier("features").versionAsInProject(), "webconsole", "usl-servicefactory"),
                            logLevel(LogLevelOption.LogLevel.WARN), 
                            when(Boolean.parseBoolean(System.getProperty("debug"))).useOptions(KarafDistributionOption.debugConfiguration("5005", true)),
                            keepRuntimeFolder()
    };
}

以下是相关features.xml文件的正文:

代码语言:javascript
复制
<feature name='usl-all'>
    <feature>usl-servicefactory</feature>
</feature>

我怎样才能改变以前的配置选项块,让它指定"usl-all“特性,而不必指定Maven GAV?

更新

不幸的是,我无法编写一个测试来验证某个特定的特性是否加载,而不经过那个不明显的路径。

尽管如此,我认为这是我所能做的最好的,除了我在这里遇到的另一个问题。

所提供的解决方案实际上不起作用,因为这个包的POM没有将工件指定为依赖项,因此"versionAsInProject()“实际上失败了。包的目的仅仅是声明特性及其包含的特性,它来自不同的包,后者将工件声明为依赖项。

我的目的是在声明包含特性的包中编写测试,即使它没有任何maven依赖项,或者产生除特性声明之外的任何工件。

我确实尝试了硬编码版本字符串ala‘version (“.”)来提供"versionAsInProject()“应该提供的版本。这确实有效,但这不是一个可以接受的解决方案。

于是,我尝试使用模块POM本身的GA和"versionAsInProject()“。这实际上是可行的,但我真的需要理解这是在做什么。引用的GA和特征名之间没有多大关系。是否有这样的基本想法:只要 GA存在于某个中,并且特性名称只查看所有声明的特性,那么引用哪个GA并不重要吗?

EN

回答 1

Stack Overflow用户

发布于 2017-10-25 13:09:41

你不能,你总是需要指定一个Maven GAV。所以,您需要做的是:用这个替换现有的特性定义块。

代码语言:javascript
复制
features(
  maven()
    .groupId("com.att.detsusl")
    .artifactId("usl-servicefactory-impl")
    .type("xml")
    .classifier("features").versionAsInProject(), "usl-all"
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46918575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档