#gradle #karaf
#gradle #karaf
Вопрос:
Я пытаюсь создать собственную команду оболочки Karaf, и я готов сделать это с помощью Gradle, потому что весь проект находится на Gradle.
Единственная соответствующая документация, которую я нашел на данный момент, находится здесь http://karaf.apache.org/manual/latest/#_shell_commands и в нем говорится
See [examples/karaf-command-example] to add your own shell commands.
Примеры создаются с использованием MAVEN, и нет абсолютно никакого описания о том, какое волшебство там происходит и что должно появиться в результирующем пакете, чтобы я мог воспроизвести это в Gradle.
Может кто-нибудь рассказать, как добиться того же в проекте Gradle?
Как Karaf определяет, какие команды присутствуют в Bundle?
Ответ №1:
Со временем я не нашел, как сделать то же самое в gradle, но я наткнулся на решение, которое дает тот же результат — с использованием декларативных сервисов OSGI.
Более подробная информация здесь (ищите osgi.command.scope
):
http://blog.vogella.com/2016/09/26/configuring-osgi-declarative-services/
Вот пример кода, который позволяет запускать команду some:command
с одним необязательным строковым параметром.
package some.application;
import org.osgi.service.component.annotations.Component;
@Component(
service=SomeCommand.class,
property = {"osgi.command.scope=some", "osgi.command.function=command"}
)
public class SomeCommand {
public void command() {
System.out.println("SomeCommand: " "<no args>");
}
public void command(String param) {
System.out.println("SomeCommand: " param);
}
}