2013-08-27 7 views
1

Je suis en train de convertir la commande JAR Linux suivante pour exécuter comme une doublure dans le CMD:Création d'un fichier Jar comme une doublure avec plusieurs classes dans le CMD/Powershell

$ jar cvf JarName.jar */*.class 

Je trouve qu'il est difficile à faire car il n'y a pas d'extension de fichier dans CMD/Powershell comme dans les coquilles * nix. Je sais que je peux le faire en créant un manifeste avec les fichiers de classe appropriés, mais le seul doublage semble tellement simple et agréable. J'ai essayé de jouer avec DIR et les pipes mais il semble que les fichiers de classe sont des arguments et ne viennent pas de STDIN. J'ai aussi essayé de jouer avec la commande FOR mais je n'arrive pas à comprendre comment en faire une seule ligne.

Est-ce que quelque chose me manque?

Merci beaucoup! Mme Plantes

+0

Est-ce que '*/* cLASS' simplement obtenir tous les fichiers .class dans les répertoires enfants de. où le fichier est en cours d'exécution? –

+0

'*/*. Class' obtient tous les fichiers de classe qui sont stockés dans un sous-répertoire du répertoire courant. Merci! – msplants

+0

peut-être dans PowerShell ... 'gci -recurce -filter * .class | % {jar cvf JarName.jar $ _. Nom complet} ' –

Répondre

1

contient uniquement les fichiers que vous souhaitez inclure dans le fichier .jar que vous pouvez faire ceci:

jar cvf JarName.jar . 

Sinon, la façon la plus simple pourrait être de dupliquer la structure des dossiers avec juste les fichiers de classe via robocopy puis jar le double:

robocopy "C:\path\to\classdir" "C:\path\to\classdir_dup" *.class /s 
jar cvf JarName.jar -C "C:\path\to\classdir_dup" . 
rd /s /q "C:\path\to\classdir_dup" 
+1

Merci Ansgar! La seule chose que j'ai dû ajouter était l'option '/ S' de la commande robocopy et cela a fonctionné comme un charme. Je vous remercie! – msplants

0

Il se peut que je manque quelque chose, mais essayez-vous simplement d'ajouter tous les fichiers de classe dans tous les sous-répertoires? Je pense que cela fonctionne comme ceci: Si l'arborescence des dossiers

jar cvf JarName.jar *.class 
+0

Cela ne se répètera pas dans les sous-dossiers. –

+0

Merci pour votre réponse, nograpes, mais Ansgar a raison - il ne se recurse pas dans les sous-répertoires. J'ai plus d'un sous-répertoire dont chacun a des fichiers de classe qui devraient être inclus dans le pot ... – msplants

Questions connexes