Как я могу заставить Sublime компилировать файлы в определенный каталог?

#java #linux #sublimetext3

Вопрос:

Мой учитель дал нам сценарий, который он сам написал для нас, чтобы мы использовали его для компиляции Java. Я организовал папки особым образом (в отличие от нашего учителя), потому что мне нравится мой собственный способ организации вещей.

Моя структура папок:

 prg/
├─ EasyGraphics.java
├─ class/
│  ├─ lab/
│     ├─ lesson/
│        ├─ GraphicsLesson.java
├─ libraries/
   ├─ eg/
 

Сценарий, который он нам дал:

   {
    "cmd": ["javac "-Xlint:none" "-cp" ".:.." "-encoding" "utf8" "$file_name" "],   
    "shell": "true",
    "file_regex": "^(...*?):([0-9]*):?([0-9]*)",   
    "selector": "source.java", 
    "variants":
    [
      {
        "name": "Run",
        "cmd": ["java "-cp" ".:.." "$file_base_name" "],
        "shell": "true"
      }
    ]
  }  
 

Сценарий доставил мне проблемы, когда я поместил EasyGraphics в другую папку, поэтому я отредактировал его следующим образом:

 "cmd": ["javac "-Xlint:none" "-cp" "./../../../." "-encoding" "utf8"
 
 "cmd": ["java "-cp" "./../../../." "$file_base_name" "]
 

Когда я компилирую GraphicsLesson.java , он создает большое количество файлов в prg каталоге, но я хотел бы, чтобы они были созданы в /libraries/eg — как я могу этого добиться?

До сих пор я пытался:

 "cmd": ["javac "-Xlint:none" "-cp" "./../../../.:libraries/eg" "-encoding" "utf8"
 
 "cmd": ["javac "-Xlint:none" "-cp" "./../../../.:/libraries/eg" "-encoding" "utf8"
 
 "cmd": ["javac "-Xlint:none" "-cp" "./../../.././libraries/eg" "-encoding" "utf8"
 

И многое другое, но, кажется, ничего не работает.

Мы будем очень признательны за любую помощь. Спасибо.

Комментарии:

1. Вопрос, который вы хотите задать, звучит так: «Как заставить javac генерировать файлы в определенную папку»; в том, что делает Sublime при выполнении сборки, нет ничего волшебного, он просто выполняет то, что вы ему говорите. Это зависит от вас, чтобы создать команду, которая делает то, что вы хотите.

2. Я понимаю. Ну, и как мне это сделать?

Ответ №1:

Итак, мне удалось выяснить, как извлечь его в один суб-каталог, но не в суб-каталоги в суб-каталогах:

     "cmd": ["javac "-Xlint:none" "-cp" ".:../../.././dir:../dir:../../dir" "-encoding" "utf8" "$file_name" "],
    "shell": "true",
    "file_regex": "^(...*?):([0-9]*):?([0-9]*)",   
    "selector": "source.java", 
    "variants":
    [
      {
        "name": "Run",
        "cmd": ["java -cp .:../../.././dir:../dir:../../dir $file_base_name "],
        "shell": "true"
      }
    ]
  }