Osgi 在apache karaf开始时运行命令的脚本

Osgi 在apache karaf开始时运行命令的脚本,osgi,apache-karaf,karaf,Osgi,Apache Karaf,Karaf,当我运行karaf时,我需要在其中安装一些功能。为此,我发出如下命令: install -s mvn:org.apache.derby/derby/10.8.2.2 feature:install jndi jpa transaction http 我想自动化这件事,因为我想启动卡拉夫自己重新启动。我已经读到,我可以使用wrapper:service在重启时启动它。但我脑海中的下一个问题是,我将如何发出这些命令 我已经读到,它可以使用etc/shell.init.script来完成。但我不能理

当我运行karaf时,我需要在其中安装一些功能。为此,我发出如下命令:

install -s mvn:org.apache.derby/derby/10.8.2.2
feature:install jndi jpa transaction http
我想自动化这件事,因为我想启动卡拉夫自己重新启动。我已经读到,我可以使用wrapper:service在重启时启动它。但我脑海中的下一个问题是,我将如何发出这些命令

我已经读到,它可以使用etc/shell.init.script来完成。但我不能理解卡拉夫网站页面上给出的例子

my karaf中shell.init.script文件的最后几行是:

help = { *:help $args | more } ;
man = { help $args } ;
log:list = { log:get ALL } ;
我应该简单地将这些命令写在这些行下面,还是需要编写一些我不知道的函数,比如脚本页面上给出的函数(下面给出了一个)

#
# Add a value at the end of a property in the given OSGi configuration
#
# For example:
# > config-add-to-list org.ops4j.pax.url.mvn org.ops4j.pax.url.mvn.repositories http://scala-tools.org/repo-releases
#
config-add-to-list = {
  config:edit $1 ;
  a = (config:property-list | grep --color never $2 | tac) ;
  b = (echo $a | grep --color never "\b$3\b" | tac) ;
  if { ($b trim) isEmpty } {
    if { $a isEmpty } {
      config:property-set $2 $3
    } {
      config:property-append $2 ", $3"
    } ;
    config:update
  } {
    config:cancel
  }
}

在研究了更多的概念并做了一些尝试之后,我发现这些命令可以用脚本编写,但是必须用它的包来指定(我不知道怎么称呼它为包或捆绑包)

这些命令可以以以下形式给出:

bundle:install -s mvn:org.apache.derby/derby/10.8.2.2
feature:install jndi jpa transaction http
shell:echo "in script"

您可以在featuresRepositories和featuresBoot部分下的“org.apache.karaf.features.cfg”中添加启动时安装的功能(和功能repos)。

karaf命令的第一部分(
bundle
feature
shell
…)被称为Scope。我有一个与此类似的问题。不幸的是,这个答案真的没有帮助。我不知道你把这些命令放在哪里了。你能帮忙吗?