gewusst wie: veröffentlichen von 3rdparty Artefakte mit Efeu und nexus

Bin ich fleißig immer meine Füße nass mit Efeu. Ich habe eine vorhandene nexus-repository läuft auf meinem lokalen PC und eine bestehende ant-build-Skript.
Funktionieren beide gut.

Teil des build-scripts müssen einige Dateien abrufen, die unser 3rdparty jar-Dateien (log4j, xmlbeans, junit, pdf, etc..) von einem Netzwerk-share - was ist klunky am besten.

Will ich mit ivy Abhängigkeit Mechanismen, um diese Dateien abrufen, die aus einem nexus-repository und verwenden Sie, dass in den build ein. Jeder 3rdparty lib hat einen Namen und eine beliebige Anzahl von Dateien (jar, dll -, Lizenz.dat, xml, etc).

Da haben wir eine große Anzahl dieser 3rdparty libs und jede lib hat mehrere Dateien - manuelle hochladen auf nexus ist keine option-ich brauche etwas, das ich verwenden können, um nehmen Sie eine Reihe von Dateien, geben Sie einen lib-name, die Versionsnummer und laden Sie das Ergebnis auf nexus. dann muss ich in der Lage sein, um diese abrufen von ivy.

Konnte ich die upload-Teil zu arbeiten, aber die retreival-Prozess nicht funktioniert. Mit unserem xmlbeans lib als Ausgangspunkt habe ich die folgenden ivy.xml Datei

<ivy-module version="1.0">  
<info organisation="thirdparty_tools" module="xmlbeans" status="integration">  
<publications>  
  <artifact name="jsr173_api" type="jar" ext="jar"/>  
  <artifact name="saxon-dom" type="jar" ext="jar"/>  
  <artifact name="saxon-xpath" type="jar" ext="jar"/>  
  <artifact name="saxon" type="jar" ext="jar"/>  
  <artifact name="xbean" type="jar" ext="jar"/>  
  <artifact name="xbean_xpath" type="jar" ext="jar"/>  
  <artifact name="xmlpublic" type="jar" ext="jar"/>  
</publications>  
</ivy-module>  

dann einige ant-Skript zu veröffentlichen, die es auf nexus:

 <ivy:resolve/>  
    <ivy:publish <ivy:publish resolver="thirdparty" forcedeliver="true" update="true" revision="${version}" overwrite="true">  
      <artifacts pattern="[artifact].[ext]"/>  
    <ivy:publish/>  

Und das alles Prima funktioniert. Es veröffentlicht alle jar-Dateien von nexus im erwarteten Verzeichnis.

Das Problem kommt, wenn ich versuche, es in meinem build.
Ich habe die folgenden ivy.xml die Datei für mein build:

<ivy-module version="1.0">  
    <info organisation="myCompany" module="GLB_Data"/>  
    <dependencies>  
        <dependency org="thirdparty_tools" name="xmlbeans" rev="2.2.0"/>  
    </dependencies>  
</ivy-module> 

Dann, wenn ich meine bauen - er kann nichts finden:

::::::::::::::::::::::::::::::::::::::::::::::  
::          UNRESOLVED DEPENDENCIES         ::  
::::::::::::::::::::::::::::::::::::::::::::::  
:: thirdparty_tools#jsr173_api;2.2.0: not found  
:: thirdparty_tools#saxon-dom;2.2.0: not found  
:: thirdparty_tools#saxon-xpath;2.2.0: not found  
:: thirdparty_tools#saxon;2.2.0: not found  
:: thirdparty_tools#xbean;2.2.0: not found  
:: thirdparty_tools#xbean_xpath;2.2.0: not found  
:: thirdparty_tools#xmlpublic;2.2.0: not found  
:::::::::::::::::::::::::::::::::::::::::::::: 

Scheint das problem zu sein mit diesem Muster:

WARN: ==== public: tried  
WARN:   http //localhost:8081/nexus/content/groups/public/thirdparty_tools/jsr173_api/2.2.0/jsr173_api-2.2.0.pom  
WARN:   -- artifact thirdparty_tools#jsr173_api;2.2.0!jsr173_api.jar:  
WARN:   http //localhost:8081/nexus/content/groups/public/thirdparty_tools/jsr173_api/2.2.0/jsr173_api-2.2.0.jar  

ivy seems to be looking for the jsr173_api artifact under its own name, rather than under the xmlbeans folder where it was published to:  
[ivy:publish]   published jsr173_api to http //localhost:8081/nexus/content/repositories/thirdparty/thirdparty_tools/xmlbeans/2.2.0/jsr173_api-2.2.0.jar  

(urls unkenntlich gemacht, um Unfälle zu vermeiden).

also irgendwie muss ich anders veröffentlichen oder abrufen anders. Ideen und Anregungen werden sehr geschätzt.

InformationsquelleAutor Jon | 2011-02-24

Schreibe einen Kommentar