Java 在OSGi中运行时,如何将groovy从2.4升级到2.5?

Java 在OSGi中运行时,如何将groovy从2.4升级到2.5?,java,maven,groovy,osgi,pax-exam,Java,Maven,Groovy,Osgi,Pax Exam,我正在维护一个部分基于Groovy的开源库,名为。在下一个版本中,我想将Groovy依赖项从2.4.x升级到2.5.x。然而,在执行此操作时,我在运行OSGi测试时遇到了问题。测试正在使用它们,它们通常看起来像: @RunWith(PaxExam.class) 公共类XmlPathSGIITest{ @配置 公共静态选项[]配置(){ 返回新选项[] { mavenBundle(“org.apache.servicemix.bundles”、“org.apache.servicemix.bund

我正在维护一个部分基于Groovy的开源库,名为。在下一个版本中,我想将Groovy依赖项从2.4.x升级到2.5.x。然而,在执行此操作时,我在运行OSGi测试时遇到了问题。测试正在使用它们,它们通常看起来像:

@RunWith(PaxExam.class)
公共类XmlPathSGIITest{
@配置
公共静态选项[]配置(){
返回新选项[]
{
mavenBundle(“org.apache.servicemix.bundles”、“org.apache.servicemix.bundles.hamcrest”、“1.3_1”),
junitBundles(),
systemProperty(“pax.exam.osgi.unresolved.fail”).value(“true”),
systemProperty(“org.ops4j.pax.logging.DefaultServiceLog.level”).value(“INFO”),
/*Pax考试容器中需要可传递的依赖项。
其中一些需要包装,因为它们不能作为OSGi捆绑包使用*/
mavenBundle(“org.apache.commons”,“commons-lang3”).versionAsInProject(),
wrappedBundle(mavenBundle().groupId(“org.ccil.cowan.tagsoup”).artifactId(“tagsoup”).versionAsInProject()),
wrappedBundle(mavenBundle(“javax.xml.bind”,“jaxb-api”).versionAsInProject()),
wrappedBundle(mavenBundle(“javax.activation”,“activation”).version(“1.1.1”),
wrappedBundle(mavenBundle().groupId(“org.codehaus.groovy”).artifactId(“groovy all”).version(“2.5.6”),
wrappedBundle(mavenBundle(“org.apache.httpcomponents”,“httpclient”).versionAsInProject(),
wrappedBundle(mavenBundle(“org.apache.httpcomponents”,“httpmime”).versionAsInProject(),
wrappedBundle(mavenBundle(“org.apache.httpcomponents”,“httpcore”).versionAsInProject()),
/*Pax考试容器中需要的放心依赖项才能执行以下测试*/
mavenBundle(“io.rest assured”,“json路径”).versionAsInProject(),
mavenBundle(“io.rest assured”,“xml路径”).versionAsInProject(),
mavenBundle(“io.rest-assured”,“rest-assured”).versionAsInProject(),
mavenBundle(“io.rest-assured”,“rest-assured-common”).versionAsInProject()
};
}
@试验
public void getUUIdParseAstringResultUUID(){
最后一个字符串UUID_XML=“\n”+
“db24eeeb-7fe5-41d3-8f06-986b793ecc91\n”+
“d69ded28-d75c-460f-9cbe-1412c60ed4cc\n”+
"";
最终UUID UUID=from(UUID_XML).getUUID(“some.thing[0]”);
资产(uuid,Matchers.equalTo(uuid.fromString(“db24eeb-7fe5-41d3-8f06-986b793ecc91”));
}
}
运行此测试将导致错误:


测试运行:1,失败:0,错误:1,跳过:0,运行时间:1.86秒从central检索Groovy 2.5.6似乎有问题。我在尝试直接使用Maven时遇到了相同的错误:
mvn org.apache.Maven.plugins:Maven依赖插件:3.1.1:get org.codehaus.groovy:groovy all:jar:2.5.6

通过查看,您可以看到只有文档和源代码可用,而JAR文件不可用。Groovy all的所有2.5版本都是这样

我认为这是因为所有2.5版本都只是某种“元工件”,没有自己的代码(因此没有JAR可用)。groovy的实际实现分为以下工件,这些工件都取决于:

org.codehaus.groovy:groovy
org.codehaus.groovy:groovy-ant
org.codehaus.groovy:groovy-cli-commons
org.codehaus.groovy:groovy-cli-picocli
org.codehaus.groovy:groovy-console
org.codehaus.groovy:groovy-datetime
org.codehaus.groovy:groovy-docgenerator
org.codehaus.groovy:groovy-groovydoc
org.codehaus.groovy:groovy-groovysh
org.codehaus.groovy:groovy-jmx
org.codehaus.groovy:groovy-json
org.codehaus.groovy:groovy-jsr223
org.codehaus.groovy:groovy-macro
org.codehaus.groovy:groovy-nio
org.codehaus.groovy:groovy-servlet
org.codehaus.groovy:groovy-sql
org.codehaus.groovy:groovy-swing
org.codehaus.groovy:groovy-templates
org.codehaus.groovy:groovy-test
org.codehaus.groovy:groovy-test-junit5
org.codehaus.groovy:groovy-testng
org.codehaus.groovy:groovy-xml

因此,为了修改代码,您必须确定您真正需要的groovy工件,并将它们逐个添加到代码中。

我认为从2.5版本开始,没有单一的jar

事实证明,在选择了正确的工件之后,在本例中,groovy和groovy json,您也需要

如果不添加该捆绑包,groovy json OSGi片段捆绑包将无法得到解析,日志记录中没有任何关于原因的提示

mavenBundle().groupId("org.apache.aries.spifly").artifactId("org.apache.aries.spifly.dynamic.bundle").version("1.2.1")