Comment créer un PPA pour un projet Maven?

8

Je voulais essayer de créer mon propre PPA. Le projet que j'ai est un projet java construit avec maven. Voici ce que j'ai déjà fait jusqu'à présent:

  • Créé un PPA.
  • Configurez un nouveau projet sur Launchpad.
  • Ajout d'une branche qui importe mon projet à partir d'un référentiel SVN.
  • J'ai créé une recette pour cette branche qui publie les versions sur mon PPA.

C'est là que je suis coincé.

J'ai lu les tutoriels et googlé beaucoup; mais je n'ai pas pu découvrir comment construire mon projet.

Je peux démarrer une build pour la branche; mais, comme je m'y attendais, cela échoue. Je suppose que je dois mettre des méta-informations comme un makefile dans le référentiel. Est-il même possible de construire et de packager des projets Maven sur Launchpad? J'ai également essayé de créer un fichier .deb localement en utilisant bzr dh-makeet debuild. bzr dh-makecréé beaucoup de fichiers dans le ./debiandossier mais a debuildéchoué. Je suppose que cela fonctionnerait si je spécifiais les bonnes métadonnées dans mon projet, c'est donc le même problème que sur Launchpad.

Je sais que c'est une question assez générale mais je pense qu'il y a un manque de tutoriels appropriés pour empaqueter des .debfichiers même si vous n'avez pas de cas "exotique" comme moi.

Résumer:

Quels fichiers / informations dois-je fournir dans mon projet afin qu'il puisse être correctement construit et conditionné?

Toute aide est la bienvenue :-)

André Stannek
la source
1
afaict c'est possible. je cherche une solution, mais ça va prendre du temps
RobotHumans
Donc??? Comment est-il fait. Ça me rend fou.
i30817
@ i30817 - désolé, j'étais absent pour defcon, maintenant je travaille sur un jeu pour ubuntu. je répondrai aussi rapidement que les autres demandes le permettront
RobotHumans
J'en suis au point où j'essaie d'appeler debuild pour voir s'il est capable de construire le deb avant de le télécharger sur un ppa. Pas de chance: dh build - avec javahelper dh_testdir dh_auto_configure jh_linkjars dh_auto_build jh_build dh_auto_test fakeroot debian / règles binaire dh binaire - avec javahelper dh_testroot dh_prep dh_installdirs dh_aut_mp_st__ dh_install: cp -a debian / tmp / bookjar.jar debian / bookjar / usr / share / bookjar / a renvoyé le code de sortie 1 make: *** [binaire] Erreur 2
i30817
@ aking1012 pas pressé. Je n'ai pas le temps pour ce projet non plus pour le moment.
André Stannek

Réponses:

2

Regardez dans mon projet bookjar: http://code.google.com/p/bookjar/source/browse/

spécifiquement le répertoire debian (en particulier le fichier debian / package.sh) et le fichier build.xml (ant). Dans ce fichier, il y a une nouvelle cible de «téléchargement» qui télécharge un artefact à construire vers le buildbot du tableau de bord.

J'utilise lierre et l'infrastructure de fourmis netbeans, donc il est probable que ce soit légèrement différent pour vous. Cependant, une chose est sûre: vous ne pouvez pas utiliser ivy ou maven depuis le serveur de build distant. Vous devez télécharger toutes les bibliothèques que vous utilisez, sous forme de code ou de fichiers jar. ivy: retrive télécharge les fichiers dans le répertoire rép_actuel / lib donc mon projet dans netbeans est configuré pour y chercher ses bibliothèques (nblibraries.properties fait partie de l'infrastructure netbeans pour cela). Lisez le fichier build.xml pour plus de détails (fondamentalement, les fichiers debian / rules appellent une cible de fourmi spéciale à construire sur le serveur qui n'essaye pas de créer un lien symbolique entre les fichiers jar - car ils y sont déjà copiés).

Je profite également dans mon package.sh de mon projet en mercurial pour construire un fichier journal des modifications à partir du journal hg, donc il y a d'autres problèmes à résoudre si vous voulez le même degré d'automatisme et n'utilisez pas hg (dans En fait, je pense que mon journal des modifications contourne les règles des journaux des modifications de Debian en faisant de chaque modification une version «mineure»).

i30817
la source
Cela semble prometteur, mais cela peut prendre quelques jours avant que j'aie le temps de l'examiner.
André Stannek
Oublié: dans ce schéma, vous êtes responsable des téléchargements vers les versions de ppa au lieu de lier le ppa à un référentiel de code avec un fichier de surveillance et de le faire construire périodiquement. Je le préfère de cette façon et je n'ai même pas essayé de faire l'autre, mais c'est probablement possible. Mon ppa a construit avec ça ( après 13 tentatives infructueuses! ). Soyez également prudent car votre journal des modifications doit être dans un état OCD vierge pour être accepté par debuild - ce qui signifie que votre journal hg doit également l'être - j'ai dû réactiver le référentiel à cause d'un `` utilisateur '' qui n'a pas suivi le directives
i30817
Après trois mois, c'est beaucoup mieux que rien ;-)
André Stannek
Vous ne voulez probablement pas utiliser l'astuce hg log> changelog. Il a des exigences douteuses telles que ne pas avoir de balise hg à l'exception des balises numériques (versions) ou que tous les commit commit respectent les directives debian (et puisque hg ne permet pas de changer l'historique ... si cela se produit, vous utilisez soit une extension compliquée ou réinitialisez le référentiel ... et en tout cas les clones distants de flexibles). Il a l'avantage de ne pas avoir à maintenir le journal des modifications si vous le gérez.
i30817
Je n'ai toujours pas trouvé le temps de l'examiner :-( Je voulais juste que vous sachiez que je n'ai pas oublié ce problème.
André Stannek