Question

Je ne comprends pas. J'ai configuré mon pom.xml pour utiliser le plug-in Maven Exec, afin que je puisse exécuter certaines des classes de mon projet avec le correcteur correct de la classe, -D définie et -javaagent. Donc, d'une coquille avec les classes intégrées ./target/classes, etc. Je peux exécuter les méthodes principales () en utilisant

mvn exec:java -Dexec:mainClass=classWithAMainMethod

tout bon jusqu'à présent.

Maintenant, je veux expédier mon projet (un artefact JAR) et je veux toujours pouvoir utiliser la configuration que j'ai placée dans le pom.xml pour avoir exécuté les classes avec les arguments corrects, etc. Comment puis-je faire il? Y a-t-il une façon de rester

mvn -artifactJar=MyArtifact.jar exec:java -Dexec:mainClass=classWithAMainMethod

Quand tout ce que j'ai, myArtifact.jar (ou un référentiel maven avec myArtifact.jar en elle) ??

J'ai essayé ce qui suit:

  • Obtenez le pot avec la dépendance: Obtenez l'objectif et décompressez-le. Je ne peux rien faire avec ça Comme le pom.xml semble se retrouver dans Meta-Inf / Maven dans le pot d'artefact. Y a-t-il un moyen de l'utiliser?

  • Création d'un POM mannequin où je veux exécuter mon projet avec une seule dépendance à mes projets artefact. Je peux ensuite utiliser EXEC: Java pour exécuter les classes principales, mais elle utilise la configuration de mes projets POM.

    merci.

Était-ce utile?

La solution 2

Le plugin Appassembler a assez bien fonctionné pour moi.J'ai remplacé la configuration du plug-in Exec dans la POM de mon projet avec quelque chose comme celui-ci dans la section de construction:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>appassembler-maven-plugin</artifactId>
    <version>1.2.2</version>
    <configuration>
        <repositoryLayout>flat</repositoryLayout>
        <repositoryName>lib</repositoryName>
        <extraJvmArguments>
            -Djava.rmi.server.hostname=localhost
            -javaagent:${spring.javaagent.jar}
        </extraJvmArguments>
        <programs>
            <program>
                <name>foo1</name>
                <mainClass>net.foor.FooMain</mainClass>
            </program>
               ...
    </configuration>
</plugin>

Dans Eclipse, j'ai créé un lanceur d'outils externe pour exécuter les scripts résultants de cible / Appassembler / bin

sur la machine, je voulais déployer pour (supposer l'accès au référentiel interne Maven où mes dépendances artefacts + ont été installées / déployées):

  • Première utilisation wget ou dépendance MVN: obtenez pour obtenir une copie de mon pot d'artefact.
  • extraire le pom. Unzip -j artifact.jar * /pom.xml *
  • Run MVN Appassembler: Assemblez -DassembleDirectory=.
  • Déplacez l'artefact.jar dans le répertoire ./lib
  • Définissez les autorisations d'exécution sur les scripts de shell générés dans ./bin

Autres conseils

Avez-vous essayé d'utiliser quelque chose comme onejar ?

Cela ressemble à ce que vous cherchez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top