Как извлечь файлы .class из файлов .jar? - PullRequest
5 голосов
/ 28 февраля 2011

Быстрый вопрос: мне нравится, как выглядит этот бит Ant:

<fileset dir="${lib}">  
   <patternset refid="myPattern" />  
</fileset>

Так что я мог бы использовать это, например. скопировать несколько файлов .jar из $ {lib}, которые соответствуют myPattern.

Что если я действительно хочу посмотреть на каждый файл .jar в $ {lib} и выбрать только файлы .class, соответствующие myPattern?

Ответы [ 4 ]

10 голосов
/ 03 марта 2011

Задача unjar выполняет практически все, что вы хотите, прямо из коробки.Используйте fileset, чтобы указать файлы JAR, из которых вы хотите извлечь файлы, и patternset, чтобы указать, какие файлы следует извлечь.

<unjar dest="${dest.dir}">
  <patternset refid="myPattern" />
  <fileset dir="${lib}" includes="*.jar" />
</unjar>
1 голос
/ 02 июля 2011

Вы можете использовать коллекцию ресурсов archives для извлечения нескольких файлов из нескольких архивов:

<copy todir="somedir">
    <restrict>
        <!-- This is just an example, you can use any restriction -->
        <name name="somePattern"/> 
            <archives>
                <zips>
                    <fileset dir="${lib}" includes="**/*.jar" />
                </zips>
        </archives>
    </restrict>
</copy>
0 голосов
/ 01 марта 2011

Это должно работать с antcontrib's Для задачи

<for param="file">
  <path>
    <fileset dir="${lib}" includes="*.jar"/>
  </path>
  <sequential>
    <unjar src="@{file}" dest="${dest}">
      <patternset refid="myPattern>
    </unjar>
  </sequential>
</for>
0 голосов
/ 01 марта 2011

Я почти уверен, что вам нужно распаковать банки, а затем скопировать файлы классов.

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