8
votes

Intégrer des projets Maven & Non-Maven

Je travaille actuellement sur deux projets simultanément:

  • Mon projet principal (construit avec Maven)
  • Une pointe d'un projet open source, que mon projet principal dépend de (non de construction avec Maven)

    Comment puis-je configurer Maven pour utiliser le projet OSAN comme une dépendance au moins de friction, étant donné que je développe souvent les deux en tandem?


0 commentaires

4 Réponses :


0
votes

Je pense que vous avez probablement besoin de mordre la balle et de mettre en place un pom pour votre arbre de projet OSS. C'est la partie douloureuse (comme vous auriez besoin de chasser les détails de la spécification des chemins de ressources pour divers plugins impliqués en fonction du type d'application OSAN (c'est-à-dire web, etc.)). Bonne nouvelle est que ceci est un effort unique.

Une fois que cela est fait, votre projet principal peut faire référence au projet OSS (enveloppé) comme une dépendance. Ici, une structure multi-projets (maven standard) appliquerait.


0 commentaires

1
votes

La solution que j'ai utilisée est la tâche Maven-ant ( http: //maven.apache .org / ant-tâches / ).

J'ai ajouté une tâche d'installation sur le fichier build.xml, qui installe la compilée .jar dans le repo local.

Tout en ajoutant une POM à part entière au projet serait définitivement la meilleure approche, c'est une partie de travail majeure et inflige Maven sur le projet (où les autres utilisateurs préféreraient ne pas l'utiliser).


0 commentaires

0
votes

Si le projet OSS a des dépendances - Créez un POM avec ces dépendances (votre projet les utilisera comme des dépendances transitives) et installer cet artefact et pom dans le référentiel local. Si le projet OSS n'a pas d'autres dépendances est encore plus simple - le POM est généré automatiquement lors de l'installation.

pour les deux cas utilisez Maven-Install-plugin . P>

mvn install:install-file -Dfile=your-artifact-1.0.jar \
                     [-DpomFile=your-pom.xml] \
                     [-Dsources=src.jar] \
                     [-Djavadoc=apidocs.jar] \
                     [-DgroupId=org.some.group] \
                     [-DartifactId=your-artifact] \
                     [-Dversion=1.0] \
                     [-Dpackaging=jar] \
                     [-Dclassifier=sources] \
                     [-DgeneratePom=true] \
                     [-DcreateChecksum=true]


0 commentaires

10
votes

Je peux penser à plusieurs solutions:

  1. Mavenisez le projet OSS existant. Ceci est bien sûr l'option "idéale", mais souvent non réalisable (même si vous introduisez le nouveau système de construction en parallèle de l'existant). Le projet a probablement une structure de projet existante qui diffère de la mise en page standard de Maven. La modification de la mise en page existante et de la création du script ne peut pas être souhaitée par les développeurs, adaptant une construction maven à utiliser une mise en page non standard peut être douloureuse. Dans les deux cas, vous êtes vissé.

  2. enveloppez la construction de fourmis existante avec Maven. Ceci peut être agréable si vous souhaitez inclure la construction du projet OSS dans le cycle de vie de votre projet et les avoir à la fois construits en une étape. Vous pouvez vérifier Cette réponse sur SO pour Détails sur la façon de faire cela.

  3. utiliser Apache Ivy ou Maven Ant Tâche dans la construction existante Pour produire et installer un artefact maven dans votre référentiel local. Utilisez cet artefact comme une dépendance régulière dans votre projet Maven (sauf que vous devrez déclarer manuellement ses dépendances transitives). C'est peut-être l'approche plus rapide et moins intrusive si la construction de deux projets n'est pas un problème.

    On dirait que vous choisissez l'option 3. Je pense que c'est un bon choix pour une victoire rapide.


0 commentaires