2010-04-11 6 views
2

Il existe une bibliothèque Java que j'aimerais utiliser dans mon projet. Mon projet utilise Maven pour extraire les dépendances et ça fonctionne très bien pour tout sauf cette bibliothèque. Le problème est que cette bibliothèque n'a jamais de version. L'auteur conserve la source dans un référentiel Subversion et n'apporte que des modifications au tronc.Utilisation de Maven pour créer un fichier JAR à partir de la source dans le tronc Subversion

Est-il possible que je peux dire Maven

  1. Mise à jour (ou consulter)
  2. l'arbre source de la bibliothèque de Subversion construire selon son POM
  3. Utilisez le pot résultant comme une dépendance pour ce projet
  4. faire régulièrement (peut-être à chaque génération)
  5. pour les points de bonus, qui marque la révision Subversion de cette bibliothèque que je veux utiliser

Merci!

Répondre

0

Si vous ne contrôlez pas quelque chose, vous ne pouvez pas le contrôler. Je voudrais donc:

  • votre commande les sources de la prise en pension de projet
  • les mettre sous le contrôle de version dans votre VCS
  • construire une version (et baliser la bibliothèque dans vos VCS)
  • distribuer le artefact publié via un référentiel d'entreprise

Vous ne voulez pas vraiment automatiser cela plus que cela (si l'auteur commet quelque chose qui casse votre code, Et si vous avez besoin de corriger un bug dans une version publiée de votre code, mais que vous ne pouvez pas utiliser exactement la même bibliothèque). Placez-le sous le contrôle de la source et gérez la version vous-même.

+0

Cela ressemble à la chose sensée à faire. Souhaitez-vous le maintenir séparément ou l'amener en sous-module? – Anonymoose

+0

@Anonymouse séparément. Vous n'avez pas besoin de le construire dans le cadre de votre projet, cela ralentirait les choses pour rien. Utilisez simplement une dépendance binaire (sur un pot). –

0

Est-ce pas une solution beaucoup plus simple mais efficace les suivantes:

  • vous écrire un script shell/fichier chauve-souris qui vérifie la source, construit l'artefact, et déploie un repo maven sous votre contrôle. En utilisant une dépendance d'instantané, vous obtiendrez un horodatage dans l'artefact, garantissant que chaque build de votre projet utilise la dernière version des artefacts et vous n'aurez pas besoin de mettre à jour le fichier pom.xml de votre projet.
  • Vous pouvez utiliser une tâche ant dans le fichier pom.xml de votre projet qui se connectera au cycle de génération du projet et exécutera le script shell qui génère et déploie l'artefact.
0

Est-ce que la chose open source:

Vous pouvez contacter l'auteur de la bibliothèque. Je parie qu'il est heureux de recevoir des commentaires. Dites-lui ce dont vous avez besoin, il pourrait le faire. Alternativement, offrez de l'aide pour améliorer la bibliothèque ou aider avec une version. De cette façon, d'autres utilisateurs profitent aussi.

En tant que développeur de projets open source, j'aime ce genre de commentaires.

0

Vous pouvez essayer d'utiliser Hudson, une solution d'intégration continue, avec son Subversion Plug-in pour vérifier la source périodiquement. Après qu'Hudson a réussi à extraire la source, vous pouvez la laisser exécuter un Ant script modifié pour générer la source et la déployer dans votre référentiel Maven local/distant.

0

Dans l'intérêt d'avoir une construction reproductible, je vous recommande de vérifier et de construire le projet open source vous-même et de l'installer dans votre dépôt Maven. De cette façon, vous pouvez vous référer à une version spécifique dans votre POM, ainsi votre build sera toujours reproductible.