Se conosco le coordinate di un artefatto, e un nome della classe all'interno di quel manufatto, posso fare Maven correre la classe, tra cui tutte le sue dipendenze nel classpath Java?Come posso eseguire una classe Java all'interno di un artefatto Maven, risolvendo automaticamente le dipendenze?
Ad esempio, supponiamo che un collega mi abbia parlato di uno strumento che posso eseguire, che viene pubblicato sul nostro Nexus interno con le coordinate degli artefatti example:cool-tools:1.0.0
. Ho usato this answer per scaricare l'artefatto. Ora, so che il nome della classe principale è example.Main
. Ma se mi basta andare al percorso di download del manufatto e corro java -cp cool-tools-1.0.0.jar example.Main
, ottengo NoClassDefFoundError
s per eventuali dipendenze di cool-tools
.
Sono a conoscenza dello maven-exec-plugin
, ma per quanto posso dire è solo per i progetti in cui si ha la fonte. Supponiamo che io non abbia accesso all'origine, solo il Nexus che contiene lo strumento (e tutte le sue dipendenze). Idealmente, farei qualcosa come mvn exec:exec -DmainArtifact='example:cool-tools:1.0.0' -DmainClass='example.Main'
, ma non credo che il plugin exec sia effettivamente in grado di farlo.
ETA: Per essere chiari, I non hanno un progetto locale/POM. Voglio farlo usando solo dalla riga di comando, senza scrivere un POM, se possibile.
dubito fortemente che si può raggiungere questo obiettivo senza utilizzare un pom. Potrebbe essere in grado di costruire un pom temporaneo sulla riga di comando anche se, come nel seguente: echo "" | mvn -f - –
Torsten
Non possibile. Il pom elenca le dipendenze, senza di esso non dovrai mai fare in modo che Maven costruisca un percorso di classe. –
@Coderer La tua ipotesi sul plugin exec è sbagliata. È possibile definire la dipendenza in un pom separato in cui si definiscono le dipendenze e lasciare che il plugin exec consenta di eseguire la classe. – khmarbaise