Добавить записи jar зависимостей в индекс jar (/META-INF/INDEX.LIST) - PullRequest
2 голосов
/ 24 февраля 2012

При разработке апплета я создал проект maven с упаковкой .jar и различными зависимостями .jar. Теперь я хочу добавить архивный индекс ( / META-INF / INDEX.LIST ) в jar моего проекта, который содержит не только записи для этого jar, но и записи всех jar зависимостей .

С помощью инструмента командной строки jar я достигну этого с

> jar i myproject.jar dependency1.jar dependency2.jar ...

При использовании флага индекса архива maven в плагине maven-jar в индекс архива входят только записи для myproject.jar , а не записи jar зависимостей:

  ...
  <plugin>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
      <archive>
        <index>true</index>
      </archive>
    </configuration>
  </plugin>
  ...

Есть ли возможность включить записи зависимостей в индексный файл с помощью maven?

Спасибо за любые подсказки ...

Ответы [ 2 ]

2 голосов
/ 26 февраля 2012

Я наконец решил это с помощью следующей конфигурации:

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
      <archive>
        <index>true</index>
        <manifest>
          <addClasspath>true</addClasspath>
        </manifest>
      </archive>
    </configuration>
  </plugin>

С этой конфигурацией все файлы jar (проект и зависимости) перечислены в classpath *1005* * MAN4EST.MF и их записях(файлы на уровне каталога и имена пакетов в соответствии с jar index doc ) будут находиться в INDEX.LIST .

Note # 1: Использование index и addManifest предыдущей версии 2.4 приводит к ошибке, описанной в http://jira.codehaus.org/browse/MJAR-69. Так что обязательно используйте версию 2.4 maven-jar-plugin.

Примечание # 2: Из-за ошибки, описанной в http://jira.codehaus.org/browse/MNGECLIPSE-1219,, зависимости не возникнут ни в MANIFEST.MF, ни в INDEX.LIST, если зависимости будут разрешены с помощью Разрешить артефакты рабочей области (опция конфигурации Eclipse Run).Поэтому убедитесь, что вы а) сначала установили / развернули все зависимости и б) отключили опцию Resolve Workspace (или закрыли проект зависимостей в eclipse), если это необходимо, перед сборкой проекта с помощью eclipse.

Примечание # 3: НЕ ИСПОЛЬЗУЙТЕ jar-with-dependencies (maven-assembly-plugin) и addClasspath (maven-jar-plugin), или вы удвоите все записи в полученном jar.

Примечание # 4: Инструмент командной строки java jar также оценивает путь к классу MANIFEST.MF (Помимо явного перечисления jar-файлов при вызове инструмента, как показано в моем первоначальном примере), см. пример индекса jar doc .

В связи с примечанием № 2 я буду исследоватьANT jar ...

Большое спасибо @khmarbaise, указывающему мне в правильном направлении: -)

0 голосов
/ 24 февраля 2012

Вы знаете, что это не часть файла INDEX.LIST , поскольку он содержит только классы, но не зависимости. Вместо этого зависимости должны быть расположены в файле MANIFEST.MF (насколько я знаю).

На основании Maven вы не получите эту информацию в файл INDEX.LIST. Для этого вы можете использовать файл MANIFEST.MF.

...