Comment télécharger un artefact à Artifactory / consommer dans un système de build (Maven, Gradle Ant) où l'artefact n'est pas une extension
J'ai les fichiers suivants qui je voudrais télécharger Artifactory comme un 9.8.0 versionnées artefact.
NOTE: Les deux premiers fichiers ont une extension (ils sont des fichiers exécutables c'est à dire si vous les ouvrez et chats, vous verrez des caractères indésirables).
Dossier/fichiers d'une version donnée 9.8.0 dans le CVS, c'est comme:
com.de l'entreprise.projet/gigaproject/v9.8.0/linux/gigainstall com.de l'entreprise.projet/gigaproject/v9.8.0/solaris/gigainstall com.company.project/gigaproject/v9.8.0/win32/gigainstall.exe com.de l'entreprise.projet/gigaproject/v9.8.0/gigafile.dtd com.de l'entreprise.projet/gigaproject/v9.8.0/gigaanotherfile.dtd com.company.project/gigaproject/v9.8.0/giga.jar com.de l'entreprise.projet/gigaproject/v9.8.0/giga.la guerre
En téléchargeant les fichiers ci-dessus qui ont une extension est très facile... vous Vous connectez à Artifactory qu'un administrateur/utilisateur qui a accès à déployer des artefacts, cliquez sur "Deploy" onglet parcourir pour le Artifactory fichier et une fois que vous sélectionnez le fichier, cliquez sur "Télécharger".
Ensuite, vous verrez un écran (comme illustré ci-dessus). Vous pourrez ajuster ce que vous voulez dans les champs de cette page, et une fois que vous cliquez sur "Déployer Artefact", vous avez terminé. Tout ce que vous avez à faire est sûr, c'est que vous sélectionnez le bon file.extension
fichier lors du téléchargement et assurez-vous que l'extension du fichier est indiqué dans le "Chemin de la Cible" boîte correctement (avec la version -x.x.x, etc.).
Mes questions:
Question 1: Comment puis-je télécharger un artefact qui n'a pas d'extension? Il semble que Artifactory par défaut prend un artefact comme un .pot d'extension. Comment puis-je télécharger "gigainstall" artefact comme le montre la structure de dossier/fichier ci-dessus pour Linux et Solaris? Je vois que je ne peut utiliser le nom d'artefact comme gigainstall-linux et gigainstall-solaris et de se différencier, mais je ne suis pas sûr de la façon de dire Artifactory que cet artefact n'ont pas d'extension.
Je ne pense pas que l'équipe de développement va commencer à générer cet artefact avec une bonne extension (comme cet artefact peut être codé en dur partout dans d'autres projets où ils sont actuellement à partir de CVS/SVN de contrôle à la source quelque part - ce qui est en soi une mauvaise pratique pour stocker un objet dans une source de contrôle de version de l'outil).
Question 2: Comment pourrais-je dire un système de construction (par exemple, Gradle) à consommer un non-extensioned artefact lors de, disons, 'compiler' tâche. Dans la construction.gradle en vertu de l'article dépendances { .. }, je vais ajouter quelque chose comme comme indiqué ci-dessous, mais je ne suis pas sûr pour les non-extensioned fichiers (les deux premiers dans la structure de dossier/fichier je l'ai mentionné ci-dessus).
dépendances { //compiler 'com.de l'entreprise.projet:gigainstall-linux:9.8.0@' //compiler 'com.de l'entreprise.projet:gigainstall-linux:9.8.0@??????' //compiler 'com.de l'entreprise.projet:gigainstall-linux:9.8.0@""' //compiler 'com.de l'entreprise.projet:gigainstall-linux:9.8.0@"none"' //compiler 'com.de l'entreprise.projet:gigainstall-linux:9.8.0@"NULL_or_something"' //La ligne suivante sera facilement obtenir giga.jar version giga-9.8.0.jar de Artifactory référentiel compiler 'com.de l'entreprise.projet:giga:9.8.0' //La ligne suivante sera facilement obtenir giga.la guerre compiler 'com.company.project:giga:9.8.0@war' //De la même manière, les autres d'extension en fonction des artefacts peuvent être récupérées à partir de Artifactory compiler 'com.company.project:gigafile:9.8.0@dtd' compiler 'com.company.project:gigaanotherfile:9.8.0@dtd' }
OriginalL'auteur Arun Sangal | 2014-07-02
Vous devez vous connecter pour publier un commentaire.
Réponse 1 (couvrira 2 aussi bien dans un sens différent): à l'Aide de Artifactory "Artefact Bundle" fonction en vertu de la section "Déploiement" de l'onglet peut faire l'affaire pour AU MOINS télécharger les objets dans une voie que nous voulons, en créant un fichier zip en premier (contenant la structure et les artefacts) --OU vous pouvez télécharger les objets à l'aide de/l'appel de Artifactory API REST.
Idée:
Créer un fichier zip appelé gigaproject.zip OU anyname.zip/.tar/fichier compressé qui Artifactory peut lire. Dans le zip, créer la structure - comment ces objets seront chargés de Artifactory
c'est à dire
gigaproject.zip doit contenir les informations suivantes dossiers/structure/fichiers.
Cas 1:
NOTE: Dans le cas 1 exemple, je n'ai pas utilisé toute -x.x.x dans le nom de fichier (c'est à dire que je suis une utilisation simple et clair giga.jar au lieu de giga-9.8.0.jar).
Ci-dessus Upload/Déployer entraînera les fichiers (comme illustré dans la capture d'écran suivante):
Donc, nous avons obtenu ce que nous voulions. En fait (visiblement parlant oui), mais pas d'une manière Artifactory habituellement, les magasins de ces artefacts (comme ils le devraient -x.x.x version embarquée dans le fichier de nom et d'où artefact id doit correspondre à l'objet de nom de fichier). Maintenant, si vous voulez consommer les produits suivants dans un fichier de build Gradle, vous NE pouvez pas en premier, vous ne l'avez pas téléchargé le nom de fichier avec -x.x.x nom de la version en elle, d'autre part, l'artefact id dans notre cas, 1 arbre a été "gigaproject" (après com/société/dossier de projet), de sorte que Gradle façon de définir ce que l'artefact id et ce artefact nom de fichier que vous souhaitez ne fonctionne pas.
Conclusion: Il est possible de télécharger des fichiers (avec/sans extension dans Artifactory) dans toute structure, mais il dépend de la façon dont votre système de construction permettra de consommer ou de ne pouvoir consommer ou pas.
- J'ai supprimé la structure je viens de créer avec le cas 1 .fichier zip à partir de Artifactory référentiel essayer ensuite de cas#2 et supprimé le .zip fichier que j'ai créé.
Cas 2:
Nous allons créer un versionnées nom de fichier pour chaque artefact et aussi de créer une structure dans le format - comment Artifactory fait les magasins (un artefact comme on le voit dans un référentiel dans l'arborescence) et créer un .fichier zip contenant que de la structure. Nous allons utiliser le même "Objet Bundle" pour télécharger cette .fichier zip à télécharger individuels des artefacts que nous avons besoin dans Artifactory - où artefact-id (deuxième valeur qui nous le mentionner lors de la tentative de le consommer) correspondent à la artifactfile nom dans Artifactory.
Structure de dossier/fichier pour l' .fichier zip:
NOTE: Cette fois, nous allons utiliser le même "Objet Bundle" fonction et pour les fichiers similaires (gigainstall sous Linux/Solaris dossiers), j'ai pris l'approche de la création de gigainstall dossier (contenant gigainstall-9.8.0.linux et gigainstall-9.8.0.solaris les noms de fichiers, c'est à dire quand nous allons consommer ces artefacts dans Gradle en vertu de dépendances { ... } de la section pour la compilation, nous allons utiliser x.x.x@ moyen de récupérer ces objets d'Artifactory.
OK, une fois "Objet Bundle" Deploy/Upload a réussi à le terminer, j'ai eu le message suivant.
Maintenant, nous allons voir comment il ressemble dans Artifactory lors de la recherche pour l'un de l'artefact/dans l'Arborescence. Vous pouvez le voir, nous avons les fichiers en place, avec le nom de fichier-x.x.x.l'extension de sorte que je peux les consommer facilement dans Gradle.
Dans Gradle fichier de compilation (build.gradle), je vais vous parler de:
OH OH!! - Qui n'ont pas de travail, voir ci-dessous pour Gradle erreur. Pourquoi? - Artifactory Bundle upload/fonctionnalité de déploiement télécharge un contenu du fichier zip que vous avez dans le .zip, mais il NE crée PAS .pom fichier par artefact qu'elle déploie. Donc, ce qui rend le build Gradle à l'échec. Peut-être en Ant cela peut réussir. Cela s'est produit pour chaque individu .jar/.guerre/.dtd/etc fichier. Je suis juste montrer un exemple d'erreur.
Tout en faisant gradle construction propre
Cas 3: prenons une approche simple (solution de contournement mais vous permettra d'économiser beaucoup de douleur).
Créer gigaproject.zip fichier avec la structure suivante, cette approche prend Pas de x.x.x version valeur intrinsèque de l'objet particulier/nom de fichier dans le dossier/fichier de structure. Nous allons utiliser "Seul Artefact" approche (qui va créer de l' .pom pour gigaproject.zip fichier automatiquement lors de l'upload/déployer des processus fournis par Artifactory). Vous serez toujours en mesure d'obtenir gigainstall fichier sans avoir besoin d'une extension de son nom à l'aide de cette approche. Lors de l'upload/déployer étape, comme vous avez déjà vu, vous téléchargez gigaproject.zip et artifactory allons le télécharger sur une Cible donnée Référentiel "gigaproject-x.x.x.zip" où x.x.x est 9.8.0 dans notre cas. Voir la capture d'images ci-dessous.
Maintenant, la télécharger dans Artifactory à l'aide de "Seul Artefact". Cliquez sur "Déployer Artefact" une fois que vous ajustez les valeurs de GroupId, ArtifactId, Version, etc.
Une fois que c'est chargé. Vous verrez dans le zip de l'artefact dans le référentiel cible (j'ai pris un mauvais exemple, en général ce serait libs-snapshot local ou libs-release-local à la place de la poste-...), vous serez en mesure de consommer l'ZIP artefact directement dans Graddle:
Une fois l' .zip est disponible pour le système de build Gradle, maintenant vous pouvez dire Gradle pour décompresser .fichier zip quelque part dans votre construction/espace de travail où vous pouvez nourrir le réel(déballé) fichiers (gigainstall, .dtd .jar, .de la guerre, etc.) le processus de construction/étapes.
PS: Cas n ° 1 et 2 ont travaillé pour Ant, je suppose.
Réponse 2:
Si vous avez téléchargé un non-extensioned de fichiers dans les deux sens. Assurez-vous que vous avez créé manuellement/téléchargé son POM fichier (c'est à dire si j'ai téléchargé gigainstall-9.8.0 comme un artefact sous com/société/projet/gigainstall/9.8.0/gigainstall-9.8.0, puis au même niveau, je dois/devrais créer POM du fichier (voir un modèle simple .pom fichier pour personnaliser un pot artefact ou tout téléchargement d'une extensioned fichier via "Seul Artefact" de déployer, vous verrez ce que POM Éditeur fenêtre vous montre) et de télécharger à la fois, de sorte que Gradle ne sera pas l'erreur de dire non POM conflit ou de l'erreur. Ant n'auraient pas besoin de pom (je ne l'ai pas vérifié).
Une fois qu'il est là, dans Artifactory, la ligne suivante doit fonctionner -- OU des commentaires s'il vous plaît si vous trouvez une autre façon.
OriginalL'auteur Arun Sangal