2016-05-23 15 views
1

Ich habe ein Problem mit der Aktualisierung von Bundles aus remoute Repo in unserer Testumgebung. Die Umgebung umfasst mehrere Server mit ServiceMix (oder Karaf, kein Metter) und einen Server mit JFrog Artifactory.Updates immer Bundles von Remote-Repo oder deaktivieren lokalen Repo in ServiceMix 6.0.X/Karaf 3.0.X

Vor Karaf 3.0.X verwenden wir SNAPSHOT-Versionen für die dynamische Aktualisierung von Bundles auf funktionierenden OSGi-Containern, aber jetzt suchen Karaf-Suchbündel im lokalen Repo und wenn vorhanden, nie die Lattest-Version auf dem Remote-Repository (Artefakt) überprüfen. Wie kann ich es reparieren?

Konfigurationsbeispiel für karaf und Maven (M2_HOME für Benutzer festgelegt)

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/etc/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 

Antwort

2

Es ist wahrscheinlich am besten Ihre Artefakt Förderung Ansatz zu vereinfachen, einen haben und nur an einem Ort zu Artefakten der SMX zu erhalten/Karaf-Behälter. Ich schlage vor, Ihr Artefactory so einzurichten, dass Sie ein virtuelles Repo haben, das Ihr internes Repo mit Remote-Repositories (Maven Central, Spring, etc.) zusammenführt. Ihre Container sollten nur auf Ihre interne Artifactory-Instanz verweisen. Dadurch kann Ihr Artefakt auch die Remote-Repos zwischenspeichern und Sie sind nicht mehr davon abhängig, dass das Internet aktiv ist und die Remote-Maven-Repos ebenfalls aktiv sind.

Jedes Mal, wenn Sie ein 'update $ bundleId' ausführen, fragt es das virtuelle Repo ab und Artifactory zeigt Ihnen die beste verfügbare Übereinstimmung für ein -SNAPSHOT-Artefakt.

Auch wahrscheinlich eine gute Idee, die @ snapshots aus der lokalen Datei zu entfernen: Repo-Zeile, um Verwirrung zu vermeiden.

+0

Danke, es funktioniert! – Mark