La création de Deux Exécutable Pots à l'Aide de maven-assembly-plugin

J'ai un projet Maven et je veux créer deux exécutable jar fichiers. On va être utilisé de manière interactive par les utilisateurs et un second sera gérée comme une tâche planifiée qui lit les fichiers journaux produits par les anciens. En fin de compte, je m'attends à ce que les deux fichiers jar à être identiques, sauf pour le Principal attribut de Classe dans le MANIFESTE.MF fichier.

Je suis en utilisant maven-antrun-plugin pour créer un fichier exécutable jar et cela semblait fonctionner correctement jusqu'à ce que j'ai essayé de créer un deuxième fichier jar en introduisant des profils Maven. La section pertinente de mon POM fichier ressemble à ceci:

<profiles>
    <profile>
        <id>publisher</id>
        <build>
            <finalName>${project.artifactId}</finalName>
            <plugins>
                ...
                <plugin>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>2.4</version>
                    <configuration>
                        <appendAssemblyId>false</appendAssemblyId>
                        <finalName>${project.artifactId}</finalName>
                        <archive>
                            <manifest>
                                <mainClass>fully.qualified.path.Publisher</mainClass>
                            </manifest>
                        </archive>
                        <descriptorRefs>
                            <descriptorRef>jar-with-dependencies</descriptorRef>
                        </descriptorRefs>
                    </configuration>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>single</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
    <profile>
        <id>logReader</id>
        <build>
            <finalName>${project.artifactId}</finalName>
            <plugins>
                ...
                <plugin>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>2.4</version>
                    <configuration>
                        <appendAssemblyId>false</appendAssemblyId>
                        <finalName>${project.artifactId}-logReader</finalName>
                        <archive>
                            <manifest>
                                <mainClass>fully.qualified.path.LogReader</mainClass>
                            </manifest>
                        </archive>
                        <descriptorRefs>
                            <descriptorRef>jar-with-dependencies</descriptorRef>
                        </descriptorRefs>
                    </configuration>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>single</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

Vraiment, la seule différence entre les deux est la "finalName" et "mainClass" éléments, comme défini dans le plugin.

Lorsque j'essaie d'exécuter mvn:paquet sur les deux profils (je suis à l'aide d'IntelliJ IDEA, par la voie), j'obtiens deux .les fichiers jar, mais une seule est correcte et l'autre est incorrect. La "bonne" contient toutes les dépendances et une pièce MANIFESTE.MF fichier. La "mauvaise" un contient pas de dépendance, et le MANIFESTE.MF fichier manque le "Principal-Classe" bien que j'ai besoin pour qu'il soit exécutable.

J'ai trouvé que si je jamais couru juste un profil ou l'autre, qu'il fonctionne très bien mais, si j'essaie d'exécuter les deux profils à la fois, il échoue. Je reçois aussi les notes suivantes dans mon journal, mais je dois avouer que je ne comprends pas complètement ce qu'ils disent:

[INFO] Building jar: .../target/publisher.jar
...
[INFO] Building jar: .../target/publisher-logReader.jar
[WARNING] Configuration options: 'appendAssemblyId' is set to false, and 'classifier' is missing.
Instead of attaching the assembly file: .../target/publisher-logReader.jar, it will become the file for main project artifact.
NOTE: If multiple descriptors or descriptor-formats are provided for this project, the value of this file will be non-deterministic!
[WARNING] Replacing pre-existing project main-artifact file: .../target/publisher.jar with assembly file: .../target/publisher-logReader.jar

Les réflexions à ce sujet? Est-il possible de créer deux fichiers jar avec un seul mvn package de cette façon, ou suis-je fausse route?

Merci!

InformationsquelleAutor McGlone | 2013-04-03