2012-02-14 7 views
0

Dans ce qui suit senarioMaven dépendent des classes spécifiques

J'emballage d'un fichier jar externe (lire une dépendance, je n'ai aucun contrôle) et enveloppant ce dans un service d'être exposé sur RMI.

Je voudrais mon interface de service à exporter aussi comme une dépendance Maven mais comme il sera des classes de retour définies dans la dépendance, cela signifie que la dépendance elle-même sera utilisé comme une dépendance de mon interface de service.

Malheureusement le fichier jar d'origine contient de nombreuses classes qui ne sont pas pertinentes pour mon service exposé.

Est-il possible de dépendre de quelques classes dans ce fichier jar dans maven (éventuellement en extrayant et reconditionnant les quelques classes pertinentes)?

  • uberbig_irrelevant.jar
    • com.uberbig.beans < - besoin de ce paquet ou quelques classes en elle.
    • com.uberbig.everythingElse

projet de service comprend tous uberbig pot. Mais expose un service BeanService qui a un appel qui renvoie une instance de com.uberbig.beans.IntrestingLightWeightSerialiasbleBean.

projet d'interface de service doit avoir une définition de haricot qui ressemble

interface BeanFetcher { 
    public IntrestingLightWeightSerialiasbleBean fetchBeanById(long beanId); 
} 

Donc, idéalement mon fichier jar serviceInterface ne comprendrait l'interface BeanFetcher. La définition de IntrestingLightWeightSerialiasbleBean et toutes les dépendances directes de IntrestingLightWeightSerialiasbleBean. Le projet doit être utilisé en interne et ne doit pas être exposé publiquement. Il ne devrait donc pas y avoir de problème de reconditionnement tant que les définitions de beans reconditionnées sont binaires et compatibles avec le fichier jar externe.

Avez-vous des suggestions?

Peut-être question liée Maven depend on project - no jar but classes

Peut-être que je pourrais utiliser quelque chose de la dépendance: section de copie de la maven-dependency-plugin mais je n'ai pas compris comment faire.

Répondre

1

Je pense que vous avez bien le plugin, mais pas le but. Vous devriez plutôt utiliser dependency:unpack.

Vous devriez être en mesure d'utiliser un filtre d'inclusion pour extraire uniquement les classes dont vous avez besoin, puis les réemballer dans votre propre pot. (Le jar d'interface de service si vous le faites dans le projet d'interface de service, mais vous pouvez tout aussi bien mettre en place un projet séparé.)

1

Créez votre propre pot reconditionné et placez-le dans votre dépôt local. Et j'espère que vous avez réellement identifié toutes les dépendances, en tenant compte de la réflexion, etc. L'OMI ne vaut pas vraiment la peine.

Vous pouvez le faire automatiquement (avec le risque accru associé) en utilisant ProGuard/etc. pour retirer les classes inutilisées, etc. Cela pourrait aussi être fait sur votre propre artefact, par exemple, en créant un pot tout-en-un via jarjar/onejar/etc.

+0

Alors serait-il possible de reconditionner en utilisant maven le savez-vous? – Wes

Questions connexes