我有一个部署独立OSGíApache ServiceMix应用程序的项目。它有很多依赖项,并且是用Maven构建的。现在我想将这个应用程序部署到JBoss AS中。我发现了一个有趣的Maven插件jboss-as-maven-plugin
(org.jboss.as.plugins
),可以部署任何东西。我使用maven-bundle-plugin
(org.apache.felix
)来构建我的捆绑包,它运行良好,但当我部署项目捆绑包时,部署失败,因为不满足依赖关系。
如何将所有依赖树与Maven目标自动绑定和部署?有可能吗?我的项目在pom.xml
上声明了几十个依赖项,其中一些是我工作区中的其他项目。
目前我所知道的唯一解决方案是Karaf功能。您可以从pom依赖项中创建一个特征文件。
我发现jboss似乎支持子系统。这可能有助于指定运行应用程序所需的捆绑包。它似乎不是OSGi子系统规范,但对于jboss来说,这可能已经有所帮助了。对于OSGi规范5,有一个标准化的子系统规范,它可以提供一种跨容器的标准方法。
如果jboss支持OBR(OSGi捆绑存储库),那么您可以限制必须指定的依赖项的数量。
如果您的应用程序不使用OSGi,您可以考虑将应用程序打包为可在JBoss中部署的WAR。
然后,您需要使用web.xml来引导您的应用程序,例如使用Spring xml文件。
这里有一个骆驼战争的例子:http://camel.apache.org/servlet-tomcat-example.html
您可以使用org.apache.sling插件自动安装捆绑包
<plugin>
<groupId>org.apache.sling</groupId>
<artifactId>maven-sling-plugin</artifactId>
<executions>
<execution>
<id>install-bundle</id>
<goals>
<goal>install</goal>
</goals>
</execution>
</executions>
<configuration>
<slingUrl>http://localhost:8181/system/console/install</slingUrl>
<user>karaf</user>
<password>karaf</password>
</configuration>
</plugin>
您可以从Adobe网站找到详细的pom.xml:https://docs.adobe.com/docs/en/cq/5-6-1/developing/developmenttools/how-to-build-aem-projects-using-apache-maven.html
或http://www.cqblueprints.com/tipsandtricks/build-and-deploy-osgi/build-deploy-osgi-1.html