Выполнить команду jar исключить файлы - PullRequest
10 голосов
/ 04 января 2011

Я следовал Java Archive Tool , но не смог найти, как исключить папки.

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

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

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

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

Ответы [ 6 ]

21 голосов
/ 22 июня 2012

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

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

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

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

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

2 голосов
/ 04 января 2011

Это может быть практическим решением вашей проблемы: оно не будет исключать каталог (каталоги) 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
1 голос
/ 10 августа 2011

В SVN существует концепция под названием «Экспорт». если вы используете это, вы получите структуру без хранилища .svn. Это немного отличается от Check-Out.

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

1 голос
/ 04 января 2011

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

0 голосов
/ 04 января 2011

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

0 голосов
/ 04 января 2011

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

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

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

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