KieScanner
6.0 KieScanner заменяет агент 5.x KnowledgeAgent. Он использует встроенный Maven для разрешения и извлечения файлов JAR во время выполнения. Приложения 6.0 теперь могут легко поддерживать зависимости и транзитивные зависимости; использование хорошо известной семантики Maven для управления версиями. Это позволяет развертывание на пути к классам, а также динамически во время выполнения. В настоящее время он поддерживает «scanNow» вручную и интервальный опрос, удаленное взаимодействие будет добавлено в будущем. KieScanner может быть зарегистрирован на KieContainer, как в следующем примере:
1
2
3
4
5
6
|
KieServices kieServices = KieServices.Factory.get(); ReleaseId releaseId = kieServices.newReleaseId( "org.acme" , "myartifact" , "1.0-SNAPSHOT" ); KieContainer kContainer = kieServices.newKieContainer( releaseId ); KieScanner kScanner = kieServices.newKieScanner( kContainer ); // Start the KieScanner polling the Maven repository every 10 seconds kScanner.start( 10000L ); |
В этом примере KieScanner настроен для работы с фиксированным интервалом времени, но его также можно запустить по требованию, вызвав для него метод scanNow (). Если KieScanner находит в репозитории Maven обновленную версию проекта Kie, используемого этим KieContainer, он автоматически загружает новую версию и запускает пошаговую сборку нового проекта. С этого момента все новые KieBases и KieSessions, созданные из этого KieContainer, будут использовать новую версию проекта.
Установка
развертывание
Settings.xml и настройка удаленного репозитория
Файл maven settings.xml используется для настройки выполнения Maven. Подробные инструкции можно найти на веб-сайте Maven: http://maven.apache.org/settings.html Файл settings.xml может быть расположен в 3 местах, фактические используемые настройки — это объединение этих 3 мест.
- Установка Maven: $ M2_HOME / conf / settings.xml
- Установка пользователя: $ {user.home} /. M2 / settings.xml
- Расположение папки, указанное в свойствах системы kie.maven.settings.custom
Файл settings.xml используется для указания местоположения удаленных репозиториев. Важно, чтобы вы активировали профиль, который указывает удаленный репозиторий, обычно это можно сделать с помощью «activeByDefault»:
1
2
3
4
5
6
7
8
9
|
< profiles > < profile > < id >profile-1</ id > < activation > < activeByDefault >true</ activeByDefault > </ activation > ... </ profile > </ profiles > |
Версии и зависимости Maven Maven поддерживает ряд механизмов для управления версиями и зависимостями в приложениях. Модули могут быть опубликованы с определенными номерами версий, или они могут использовать суффикс SNAPSHOT. Зависимости могут указывать диапазоны версий для использования или использовать механизм SNAPSHOT.
StackOverflow предоставляет очень хорошее описание для этого, которое воспроизводится ниже.
Если вы всегда хотите использовать новейшую версию, у Maven есть два ключевых слова, которые вы можете использовать в качестве альтернативы диапазонам версий. Вы должны использовать эти параметры с осторожностью, так как вы больше не контролируете используемые плагины / зависимости.
Когда вы зависите от плагина или зависимости, вы можете использовать значение версии LATEST или RELEASE. LATEST относится к последней выпущенной версии или версии моментального снимка определенного артефакта, самого последнего развернутого артефакта в определенном хранилище. RELEASE относится к последнему выпуску без снимка в хранилище. В целом, не рекомендуется разрабатывать программное обеспечение, которое зависит от неспецифической версии артефакта. Если вы разрабатываете программное обеспечение, вы можете использовать RELEASE или LATEST для удобства, чтобы вам не приходилось обновлять номера версий при выпуске нового выпуска сторонней библиотеки. Когда вы выпускаете программное обеспечение, вы всегда должны убедиться, что ваш проект зависит от конкретных версий, чтобы уменьшить шансы на вашу сборку или на ваш проект под влиянием выпуска программного обеспечения, который не находится под вашим контролем. Используйте ПОСЛЕДНИЕ и РЕЛИЗЫ с осторожностью, если вообще.
См. Раздел «Синтаксис POM» книги Maven для более подробной информации.
- http://books.sonatype.com/mvnref-book/reference/pom-relationships-sect-pom-syntax.html
- http://books.sonatype.com/mvnref-book/reference/pom-relationships-sect-project-dependencies.html
Вот пример, иллюстрирующий различные варианты. В репозитории Maven com.foo:my-foo имеет следующие метаданные:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
|
< metadata > < groupId >com.foo</ groupId > < artifactId >my-foo</ artifactId > < version >2.0.0</ version > < versioning > < release >1.1.1</ release > < versions > < version >1.0</ version > < version >1.0.1</ version > < version >1.1</ version > < version >1.1.1</ version > < version >2.0.0</ version > </ versions > < lastUpdated >20090722140000</ lastUpdated > </ versioning > </ metadata > |
Если требуется зависимость от этого артефакта, у вас есть следующие опции (конечно, можно указать и другие диапазоны версий, просто показывая соответствующие): объявить точную версию (всегда будет разрешаться до 1.0.1):
1
|
< version >[1.0.1]</ version > |
Объявите явную версию (всегда разрешается до 1.0.1, если не происходит коллизия, когда Maven выберет подходящую версию):
1
|
< version >1.0.1</ version > |
Объявите диапазон версий для всех 1.x (в настоящее время разрешается до 1.1.1):
1
|
< version >[1.0.0,2.0.0)</ version > |
Объявите диапазон открытых версий (разрешится до 2.0.0):
1
|
< version >[1.0.0,)</ version > |
Объявите версию как ПОСЛЕДНЮЮ (разрешится до 2.0.0):
1
|
< version >LATEST</ version > |
Объявите версию как RELEASE (разрешит до 1.1.1):
1
|
< version >RELEASE</ version > |
Обратите внимание, что по умолчанию ваши собственные развертывания обновят «последнюю» запись в метаданных Maven, но для обновления записи «release» необходимо активировать «release-profile» из Maven super POM. Вы можете сделать это с помощью «-Prelease-profile» или «-DperformRelease = true».