comment publier 3rdparty artefacts avec du lierre et des nexus

Je suis occupé à obtenir mes pieds mouillés avec du lierre. J'ai déjà un nexus référentiel en cours d'exécution sur mon PC local, et un script ant.
Les deux fonctionnent très bien.

Cadre de la génération de scripts avez des fichiers à récupérer nos 3rdparty fichiers jar (log4j, xmlbeans, junit, pdf, etc..) à partir d'un partage réseau - qui est klunky au mieux.

Je veux utiliser le lierre de la dépendance de mécanismes pour récupérer ces fichiers à partir d'un nexus référentiel et de l'utiliser dans la construction. Chaque 3rdparty lib a un nom et un ensemble arbitraire de fichiers (pot, dll, licence.dat, xml, etc).

Puisque nous avons un grand nombre de ces 3rdparty libs et chaque lib a plusieurs fichiers - l'envoi manuel de nexus n'est pas une option -- j'ai besoin de quelque chose que je peux utiliser pour prendre un ensemble de fichiers, de leur donner une lib nom, un numéro de version et télécharger le résultat de la nexus. alors j'ai besoin d'être en mesure de récupérer ce lierre.

J'ai réussi à obtenir le téléchargement de la partie à travailler, mais le processus de récupération ne fonctionne pas. À l'aide de notre xmlbeans lib comme un point de départ, j'ai créé les suivantes ivy.xml fichier

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

et puis certains script ant pour le publier sur nexus:

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

Et tout cela fonctionne très bien. Il publie tous les fichiers jar de nexus dans le répertoire.

Le problème arrive quand j'essaye de l'utiliser dans mon construire.
J'ai créé le suivant: ivy.xml fichier pour mon 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> 

Puis quand je lance mon build - il ne parvient pas à trouver quoi que ce soit:

::::::::::::::::::::::::::::::::::::::::::::::  
::          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  
:::::::::::::::::::::::::::::::::::::::::::::: 

Le problème semble être avec ce modèle:

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  

(url d'obfuscation pour éviter les accidents).

donc, quelque part, j'ai besoin de publier différemment, ou de récupérer de manière différente. Les idées et suggestions sont appréciés.

OriginalL'auteur Jon | 2011-02-24