Компиляция одного файла .java в проекте Maven - PullRequest
0 голосов
/ 13 февраля 2019

Прямо сейчас я использую 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.Вероятно, было бы невозможно определить, какие банки были включены в оригинальную сборку.Таким образом, единственный способ узнать для Мейвена - выложить новую банку из всех библиотечных файлов в один файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...