web-dev-qa-db-fra.com

Compiler le fichier source dans un répertoire différent?

Existe-t-il un moyen de compiler un fichier source Java (*.Java) vers un autre répertoire?

Si la structure de mon fichier de package est la suivante:

Mathematics ->
  Formulas ->
    src ->
      // source files containing mathematical formulas...
    bin ->
      // class files containing mathematical formulas...
  Problems ->
    src ->
      // source files containing mathematical problems...
    bin ->
      // class files containing mathematical problems...

Je veux séparer les fichiers source et de classe pour garder les dossiers organisés, mais je dois actuellement copier tous les fichiers de classe des dossiers src vers les dossiers bin après chaque compilation.

Existe-t-il un moyen de simplifier ce processus en compilant les fichiers de classe dans un autre dossier dans la commande javac?

21
Jonathan Lam

Oui, absolument - utilisez le -d option pour spécifier le répertoire de sortie:

javac -d bin src/foo/bar/*.Java

Notez que le répertoire que vous spécifiez est la racine de la structure de sortie; les sous-répertoires correspondants seront créés automatiquement pour correspondre à la structure de package de votre code.

Voir documentation javac pour plus de détails.

Dans ce cas, vous devrez émettre une commande javac pour compiler les formules, et une autre pour compiler les problèmes - en utilisant potentiellement le répertoire bin des formules dans le cadre du chemin de classe lors de la compilation des problèmes .

(Vous voudrez peut-être envisager d'utiliser une structure source unique mais des packages différents, faites attention. Vous devriez également envisager d'utiliser un IDE pour vous cacher une partie de cette complexité - cela finit par devenir fastidieux de tout faire). de cela à la main, même si ce n'est pas réellement difficile .)

35
Jon Skeet