我有一个项目要求从命令提示符或maven命令在CQ5系统控制台中部署OSGI包(打包为JAR)。
我在寻找什么 - 有什么办法,我可以直接使用命令提示符或maven命令将我打包的可用OSGI捆绑包部署到CQ5系统控制台。
我尝试了什么 - 我找到了一种可以通过“cURL”实现这一目标的方法,下面是命令:
curl -u admin:admin -F action=install -F bundlestartlevel=20 -F bundlefile=@"C:\osgi-work\demo-file-search-bundle-1.0-SNAPSHOT.jar" http://localhost:4502/system/console/bundles
但是根据要求,我不能限制用户首先安装“cURL”然后运行命令。
是否有任何解决方法可以将我的OSGI捆绑包直接安装到CQ5控制台管理器。
答案 0 :(得分:2)
如果您使用Maven构建捆绑包,则可以包含Maven Sling Plugin。
假设您拥有POM(或settings.xml)中包含的正确属性,则可以简单地调用mvn sling:install
将该软件包安装到Felix中。
您还可以使用多个配置文件,例如:
mvn sling:install -P development
mvn sling:install -P qa
假设每个配置文件都包含该环境的URL&所需的证书。
答案 1 :(得分:2)
除了maven-sling-plugin之外,您还可以将包和内容包复制到名为" install
"的文件夹中。在CQ的JCR存储库中,前提是该文件夹位于/apps
下且不超过4或5级(我不记得确切的数字)。
例如,通过WebDav安装JCR存储库(默认情况下为http://localhost:4502
),创建名为/apps/yourstuff/install
的文件夹并在其中复制捆绑包将导致Apache Sling OSGi安装程序安装它们,就像是通过OSGi控制台发生的。安装程序仅考虑捆绑软件的最新版本,以防以这种方式提供多个副本。
答案 2 :(得分:1)
你试过mvn -P autoInstallBundle
吗?您需要在pom文件中添加autoInstallBundle配置文件:
<profile>
<id>autoInstallBundle</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.sling</groupId>
<artifactId>maven-sling-plugin</artifactId>
<executions>
<execution>
<id>my-project</id>
<phase>install</phase>
<goals>
<goal>install</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile> `