Выполнить команду jar исключить файлы

Я следил за Инструментом архива Java, но не смог найти, как исключать папки.

Например, у меня есть файлы в каталоге рабочей копии:

workingcopy
--src
  --.svn
  -- com
--.svn
--WebContent

Я хотел бы скомпилировать и создать jar только из классов под src, исключая все папки, начиная с каталога .svn. Я хочу запустить его из cmd как jar -cf test.jar и т.д.

Как я могу это сделать?

Ответ 1

Это может быть практическим обходным решением для вашей проблемы: он не исключит каталог subversion (каталоги), а включает только файлы классов (предполагая, что вы не ставите файлы классов под управлением версии):

jar -cf test.jar *.class

Дальнейшее улучшение: отдельный код из файлов классов. Вы все равно не хотите проверять файлы классов (строить артефакты):

workingcopy
--src
  --.svn
  -- com  // only *.java files in here and below
--.svn
--WebContent
--bin
  --com   // only *.class files in here and below

Ответ 2

Это можно сделать с помощью команды:

jar cf test.jar `find . -not -path "*/.svn/*" -not -type d`

Проблема с jar заключается в том, что если каталог передан, он будет рекурсивно добавляться с содержимым all. Поэтому наша цель - передать только файлы и только те из них, которые не имеют подстроки .svn в пути. Для этого используется команда find с двумя условиями:

  • -not -path "*/.svn*" отфильтровывает все svn файлы
  • -not -type d отфильтровывает все каталоги

Это исключает пустые каталоги из банки.

Ответ 3

Это легко достигается (наряду со многими другими) средствами построения, такими как maven и ant и gradle

Ответ 4

Существует концепция Export в SVN. если вы используете это, вы получите структуру без репозитория .svn. Он немного отличается от выезда.

После этого вы должны иметь возможность выполнять обычную команду jar из этого каталога вместо папки репозитория.

Ответ 5

Не похоже, что сама программа jar сможет это сделать. Вам нужно будет добавить другой тип script, чтобы выполнить то, что вы ищете.

Похоже, вы можете использовать окна, поэтому я предполагаю, что вы можете писать в этом недостающем фрагменте таким образом.

Надеюсь, что это поможет.

Ответ 6

Как сказано javamonkey79, я не хочу, чтобы вы могли сделать это только с помощью инструмента jar. Что вы должны сделать, это рассмотреть ant и jar task.