Esecuzione di lezioni principali da un artefatto schierato con Maven
-
11-12-2019 - |
Domanda
Non capisco. Ho impostato il mio Pom.xml per utilizzare il plugin Maven Exec in modo da poter eseguire alcune delle classi nel mio progetto con il corretto classpath, -d definisce e -javaagent. Quindi da un guscio con le lezioni integrate ./target/classes ecc .. Posso eseguire i metodi principali () usando
mvn exec:java -Dexec:mainClass=classWithAMainMethod
.
Tutto bene finora.
Ora voglio spedire il mio progetto (un artefatto del barattolo) e voglio ancora essere in grado di utilizzare la configurazione che ho inserito in Pom.XML per eseguire le classi con gli argomenti corretti ecc. Come faccio a fare It? C'è un modo per rimanere
mvn -artifactJar=MyArtifact.jar exec:java -Dexec:mainClass=classWithAMainMethod
.
Quando tutto ciò che ho è myartiffact.jar (o un repository Maven con myArtifact.jar in esso) ??
Ho provato quanto segue:
- .
-
Prendi il barattolo con la dipendenza: ottenere obiettivo e decomprimere. Non posso fare nulla con esso Come il Pom.XML sembra finire in Meta-Inf / Maven nel barattolo dell'artifatto. C'è un modo per usarlo?
-
Creare un POM fittizio dove voglio eseguire il mio progetto con una sola dipendenza dal mio artefatto dei miei progetti. Posso quindi utilizzare Exec: Java per eseguire le classi principali, ma non è dotato della configurazione dai miei progetti POM.
Grazie.
Soluzione 2
Il plugin Appassemblatore ha funzionato abbastanza bene per me.Ho sostituito il Config Exec Plugin nel POM del mio progetto con qualcosa del genere nella sezione Build:
<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>
.
In Eclipse ho creato un lanciatore di strumenti esterni per eseguire gli script risultanti da bersaglio / Appassemblatore / bin
Sulla macchina Volevo implementare (assumendo l'accesso al repository interno MAVEN in cui le mie dipendenze My Artifact + sono state installate / distribuite):
- .
- Primo utilizzo wget o dipendenza MVN: Ottieni per ottenere una copia del mio barattolo di artefatto.
- Estrai il POM. unzip -j artefact.jar * /pom.xml *
- Esegui MVN APPASSEMBLER: Assemblare -Dassemblebledrectory=.
- Sposta l'artefatto.jar nella directory ./lib
- Imposta le autorizzazioni di esecuzione su script della shell generati in ./bin
Altri suggerimenti
Hai provato a usare qualcosa come onejar ?
Sembra che cosa stai cercando.