我正在尝试使用Maven Cargo Plugin来部署一组OSGI Bundle和一个混合应用程序。war(使用OSGI的Webapplication with Restservice),也称为Webapplication Bundle(或WAB)(例如参见https://glassfish.java.net/public/GF-OSGi-Features.pdf)。
将OSGI包部署到Glassfish 3.1中。x工作得很好,但我还没有找到一种方法来部署Web应用程序包。
它的包装是"war",但我必须将其部署为OSGI bundle。那么我怎么知道这是Cargo Plugin呢?
我尝试使用的maven配置:
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<version>1.4.0</version>
<configuration>
<wait>false</wait>
<container>
<containerId>glassfish3x</containerId>
<home>${glassfish.home}</home>
<type>installed</type>
</container>
<configuration>
<type>existing</type>
<home>${glassfish.home}</home>
<properties>
<cargo.hostname>localhost</cargo.hostname>
<cargo.rmi.port>4848</cargo.rmi.port>
<cargo.domain.name>${glassfish.domain}</cargo.domain.name>
</properties>
</configuration>
<deployables>
<deployable>
<groupId>com.acme.rest</groupId>
<artifactId>rest-api</artifactId>
<type>bundle</type>
</deployable>
</deployables>
</configuration>
</plugin>
但是出现以下错误:
[ERROR]在项目rest-api: Artifact [com.acme]上执行目标org.codehaus.cargo:cargo-maven2-plugin:1.4.0:redeploy (default-cli)失败。Rest: Rest -api:bundle]不是项目的依赖项。->[帮助1]org.codehaus.cargo:cargo-maven2-plugin:1.4.0:redeploy (default-cli) on project rest-api: Artifact [com.acme. cn]。Rest: Rest -api:bundle]不是项目的依赖项。
作为组件类型"web"部署工作,但我不能使用OSGI包…
有人有部署Web应用程序包和OSGI包的经验吗?
我不知道cargo插件,但是要使用asadmin客户端部署wab,必须传递一个——type=osgi选项,如下所示:
asadmin deploy——type=osgi foo.war
所以,看看你是否可以配置cargo插件来传递这个选项。
Sahoo
技巧是:
<deployable>
<groupId>com.acme.rest</groupId>
<artifactId>rest-api</artifactId>
<type>war</type>
<implementation>org.codehaus.cargo.container.deployable.Bundle</implementation>
</deployable>
您仍然有一个WAR工件,但是Bundle会欺骗Cargo将其部署为OSGi。
尝试使用1.4.7
版本,该版本增加了发送asadmin
参数和@Sahoo提到的参数的支持。
<cargo.glassfish.deploy.arg.1>--type=osgi foo.war</cargo.glassfish.deploy.arg.1>
允许为glassfish部署传递额外参数https://jira.codehaus.org/browse/cargo - 1245