Прямо сейчас я использую mvn package exec:java -DskipTests
, который прекрасно скомпилирует мой проект и запустит сервер.
Вместо перезапуска сервера, если файл .java изменяется, хотелось бы только повторнокомпиляция этого одинокого файла .java.
Есть ли у кого-нибудь надежная команда javac, которая может скомпилировать один файл .java в проекте Maven и поместить его в target / classes?
Вотструктура проекта:
src/
main/
java/
foo/
My.java
и затем его необходимо скомпилировать в это место:
target/
classes/
foo/
My.class
следующий скрипт bash скомпилирует файл, если он не импортирован.
#!/usr/bin/env bash
mkdir -p "$PWD/target/classes/foo";
javac "$PWD/src/main/java/foo/My.java" -d "$PWD/target/classes" -cp "$PWD/src/main/java"
но если я включаю импорт в файл, то мне нужно использовать classpath, который включает в себя зависимости maven.
Поэтому, когда я устанавливаю classpath с помощью -cp, мне нужно сделать что-то вроде:
-cp "$PWD/src/main/java:$M2_HOME"
Кто-нибудь знает, что я должен добавить к пути к классам, чтобы покрыть maven deps, необходимые для проекта maven?
Обновление
Единственный способ, которым я думаю, это будет работать, если бы Maven мог связатьВсе зависимости, использованные в первом real , объединяются в один файл jar в определенном месте.Затем, если бы я хотел скомпилировать один файл Java, я бы сослался на этот jar в classpath.
В противном случае, кажется, что maven добавляет 100 путей к CLASSPATH, и ему нужно сделать некоторые тщательные вычисления, чтобы выяснить,какая версия какой банки включить CLASSPATH.Вероятно, было бы невозможно определить, какие банки были включены в оригинальную сборку.Таким образом, единственный способ узнать для Мейвена - выложить новую банку из всех библиотечных файлов в один файл.