Vous pouvez le faire avec des profils...
Si vous avez vraiment envie d'utiliser deux profils séparés et personnaliser le JAR du plugin pour inclure et exclure des modèles de classe et les noms de paquets, vous pouvez facilement le faire en mettant quelque chose comme ceci dans votre POM:
<profiles>
<profile>
<id>everything</id>
<build>
<plugins>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<classifier>everything</classifier>
<includes>
<include>**/*</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>only-library</id>
<build>
<plugins>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<classifier>only-library</classifier>
<excludes>
<exclude>**/Main*</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
Aparté: Si cela ressemble à beaucoup de configuration, polyglotte Maven soutien du Groovy Pdm est tout prêt. Il permettra de réduire le nombre de lignes considérablement diminué.
Vous pouvez mettre ceci à la fin de votre pom.xml (au sein de l'élément de projet), et il ajoute deux profils. Le premier profil "tout" est vraiment juste là pour démontrer la configuration. Ce "tout" profil est unnecesary simplement parce que cela duplique le comportement par défaut JAR du plugin jar but de l'exécution. Le second profil "seulement-bibliothèque" exclut toute classe dans un paquet qui commence avec le texte "Principal". Pour faire appel à ces profils:
mvn package -Peverything
mvn package -Ponly-library
J'ai testé cet égard l'exemple d'application est livré avec le Chapitre 6 de Maven par l'Exemple, et l'exécution de ces commandes permet de produire un fichier JAR dans ${basedir}/cible qui a un classificateur. Depuis le JAR du plugin jar objectif est lié à l'emballage de la phase en défaut de maven cycle de vie, ces deux profils sont pour modifier la configuration de ce plugin.
Ou, vous pouvez le faire avec deux JAR du plugin exécutions...
Si vous avez besoin de créer deux Pots sans l'aide de profils. Vous pouvez lier le JAR du plugin jar objectif pour le package phase du cycle de vie plusieurs fois et utilisent une configuration différente pour chaque configuré exécution. Si vous configurez deux exécutions, chaque exécution a exécution de la configuration spécifique du bloc de sorte que vous pouvez fournir un identifiant unique et d'inclure ou d'exclure modèle pour chaque exécution.
Ici est l'accumulation de l'élément que vous utiliseriez pour ajouter à la fois personnalisée Pots de à la phase du cycle de vie "package". Faire cela sur un projet avec l'emballage "pot" aurait lieu dans le pot de but exécuté trois fois. Une fois que le cycle de vie par défaut de liaison, puis à deux reprises pour deux personnalisées, classées Pots.
<build>
<plugins>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>only-library</id>
<goals><goal>jar</goal></goals>
<phase>package</phase>
<configuration>
<classifier>only-library</classifier>
<excludes>
<exclude>**/Main*</exclude>
</excludes>
</configuration>
</execution>
<execution>
<id>everything</id>
<goals><goal>jar</goal></goals>
<phase>package</phase>
<configuration>
<classifier>everything</classifier>
<includes>
<include>**/*</include>
</includes>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Si vous n'êtes pas en parler, y compris un ensemble différent de classes dans chaque artefact, vous aurez envie d'utiliser Maven Assemblées. Si vous voulez connaître les détails des assemblages, il y a un chapitre énumérés à la fin de cette réponse de Maven: La Référence Complète. Franchement, je ne pense pas que ce chapitre est une bonne introduction de référence; en fait, j'ai eu de nombreux rapports que ce chapitre est quasiment illisible (et nous travaillons pour corriger cela). Si vous êtes à la recherche d'utiliser des assemblages, je recommanderais le Maven Assemblée du Plugin de la documentation. Dans la partie gauche de nav menu, vous verrez une liste d'exemples de l'assemblée des descripteurs.
Avertissement: (s'il vous Plaît) à ne pas faire. Si vous êtes à la création de deux différence de Pots avec deux types de jeu de classes je vous recommande fortement de scinder le projet en deux modules interdépendants.
Alors que vous pouvez le faire avec les profils, ça va être plus facile pour vous de diviser le projet en deux (en fait trois). À plus long terme, il va y avoir des défis que vous aurez à faire face en tant que votre demande d'échelles. Vous serez responsable de figurer hors de ce manuel liste de classes et de packages pour être inclus dans chacune de vos petites Jarres.
Il y a un minimum de frais généraux pour avoir une simple projet parent qui fait référence à deux modules distincts. Si vous regardez le gratuit Maven par l'Exemple du livre, nous montrons comment faire la transition entre un module simple et multi-projet de module. Les chapitres 3-5 concentrer sur un seul module de projets, et le Chapitre 6 vous montre comment vous permettrait de combiner ces composants du module dans un plus grand multi-projet de module.
Pour plus d'informations:
Vous question porte sur les rubriques suivantes, voici quelques liens qui pourront vous fournir plus de détails pour chaque:
Le Maven JAR du Plugin: http://maven.apache.org/plugins/maven-jar-plugin/jar-mojo.html
Multi-module Maven Projets: Chapitre 6 de Maven par l'Exemple et l'Article 3.6.2 de Maven: La Référence Complète.
Le Cycle de vie de Maven (pot est lié à forfait si votre emballage est "jar"): la Section 3.5.2 de Maven par l'Exemple "Concepts de Base" et le Chapitre 4 de Maven: La Référence Complète
Maven Assemblées: tout d'Abord, le Maven Assembly site Plugin, puis le Chapitre 8 de Maven: La Référence Complète pour certaines lourd (presque trop lourd) détails.