2016-05-23 5 views
1

У меня возникла проблема с обновлением пакетов из remoute repo в нашей тестовой среде. Среда включает несколько серверов с ServiceMix (или Karaf, без учета) и сервера с JFrog Artifactory.Всегда обновлять пакеты из удаленного репо или отключать локальное репо в ServiceMix 6.0.X/Karaf 3.0.X

Перед использованием karaf 3.0.X мы используем версии SNAPSHOT для динамического обновления пакетов в рабочем контейнере OSGi, но теперь пакеты поиска karaf в локальном репо и если они никогда не проверяют последнюю версию на удаленном репозитории (artifactory). Как я могу это исправить?

Пример конфигурации для karaf и мавена (M2_HOME набор для пользователя)

settings.xml ($ M2_HOME/CONF/settings.xml)

<?xml version="1.0" encoding="UTF-8"?> 
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> 
    <pluginGroups/> 
    <proxies/> 
    <servers/> 
    <mirrors/> 
    <profiles> 
    <profile> 
     <id>default-repo-settings</id> 

     <activation> 
     <activeByDefault/> 
     </activation> 

     <repositories> 
     <repository> 
      <id>artifactory</id> 
      <url>http://artifactory/ext-snapshot-local</url> 
      <snapshots> 
       <updatePolicy>always</updatePolicy> 
      </snapshots> 
      <releases> 
       <updatePolicy>always</updatePolicy> 
      </releases> 
     </repository> 
     <!-- same repos here --> 
     </repositories> 
    </profile> 
    </profiles> 

    <activeProfiles> 
    <activeProfile>default-repo-settings</activeProfile> 
    </activeProfiles> 
</settings> 

org.ops4j.pax.url.mvn. CFG ($ KARAF_HOME/и т.д./org.ops4j.pax.url.mvn.cfg)

org.ops4j.pax.url.mvn.useFallbackRepositories=false 
org.ops4j.pax.url.mvn.disableAether=true 
org.ops4j.pax.url.mvn.useLocalRepositoryAsRemote=true 
org.ops4j.pax.url.mvn.globalUpdatePolicy=always 
org.ops4j.pax.url.mvn.defaultRepositories=file:${karaf.home}}/${karaf.default.repository}}@[email protected]=karaf.${karaf.default.repository}} 

org.ops4j.pax.url.mvn.repositories= \ 
    http://artifactory/[email protected]@id=artifactory, \ 
    http://repo1.maven.org/[email protected]=central, \ 
    http://repository.springsource.com/maven/bundles/[email protected]=spring.ebr.release, \ 
    http://repository.springsource.com/maven/bundles/[email protected]=spring.ebr.external, \ 
    http://zodiac.springsource.com/maven/bundles/[email protected]=gemini, \ 
    http://repository.apache.org/content/groups/[email protected][email protected]@noreleases, \ 
    https://oss.sonatype.org/content/repositories/[email protected][email protected]@noreleases, \ 
    https://oss.sonatype.org/content/repositories/[email protected][email protected]@noreleases 

ответ

2

это, вероятно, лучше, чтобы упростить подход продвижения артефакта, чтобы иметь один и только одно место, чтобы получить артефакты на SMX/Karaf. Я предлагаю настроить ваш Artifactory, чтобы у вас было виртуальное репо, которое объединяет ваше внутреннее репо с удаленными репозиториями (Maven Central, Spring и т. Д.). Ваши контейнеры должны указывать только на ваш собственный экземпляр Artifactory. Это также позволяет вашему Artifactory кэшировать удаленные репозитории, и вы больше не зависите от того, что находится в Интернете, и удаленный Maven Repos тоже работает.

Теперь, когда вы делаете «update $ bundleId», он будет запрашивать виртуальное репо, и Artifactory представит вам наилучшее доступное совпадение в артефакте -SNAPSHOT.

Также, возможно, хорошая идея удалить @snapshots из локального файла: строка репо, чтобы избежать путаницы.

+0

Спасибо, это работает! – Mark