Передача нескольких java-файлов в javac с помощью find - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть это:

javac -d "$PWD/target/classes" \
      -cp "$CLASSPATH:$PWD/src/main/java" \
      "$(find "$PWD/src/main/java/huru" -name '*.java')"

, но я получаю:

javac: file not found: /home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/Foo.java
/home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/entity/BaseModel.java
/home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/entity/InterfaceContainer.java
/home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/entity/KCClassEntity.java
/home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/entity/BaseEntity.java
/home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/entity/UserModel.java
/home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/query/QueryBuilder.java
/home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/TestVerticle.java
/home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/middleware/JWTHandler.java

, поэтому я попытался использовать xargs, чтобы поместить его в одну строку:

javac -d "$PWD/target/classes" \
      -cp "$CLASSPATH:$PWD/src/main/java:$m2" \
      "$(find "$PWD/src/main/java/huru" -name '*.java' | xargs)"

но тогда я получаю:

javac: file not found: /home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/Foo.java /home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/entity/BaseModel.java /home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/entity/InterfaceContainer.java /home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/entity/KCClassEntity.java /home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/entity/BaseEntity.java /home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/middleware/ErrorHandler.java /home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/util/Asyncc.java /home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/routes/IBasicHandler.java /home/oleg/codes/oresoftware/vertx.api/src/main/java/huru/routes/RouteHelper.java

, где xargs помещает все в одну строку.Все эти java-файлы существуют, пути правильные, но ясно, что результаты поиска не работают.Кто-нибудь знает, как это сделать правильно?

1 Ответ

0 голосов
/ 13 февраля 2019

Таким образом, одним из методов является использование временного файла (который отстой, но он работает):

find . -name '.java' >  my.files
javac @my.files

да, символ @ необходим, согласно спецификации javac, поэтому java знает, что это файл для чтения.

но я все еще ищу способ найти результаты поиска непосредственно в javac вместо использования временного файла.

...