Maven – как я могу добавить произвольную запись в classpath в банку?

У меня необычная ситуация, когда мне нужно добавить в манифест исполняемой банки произвольную запись пути к classу (которая указывает на файл jar). (Это для рабочего стола Swing.)

Плагин maven-jar генерирует запись «Class-Path» для манифеста jar с использованием зависимостей maven, и, похоже, нет никакого способа добавления произвольных записей.

Я также посмотрел на жесткое кодирование произвольной записи classpath в командный файл, который запускает приложение, используя параметр «-classpath», но я не могу понять, как заставить Maven фильтровать путь к classу в пакетный файл.

Я обнаружил, что есть легкое решение этой проблемы. Вы можете добавить элемент элемент и установить true в элемент . Таким образом, значение элемента автоматически добавляется в class-path. Пример:

  org.apache.maven.plugins maven-jar-plugin    true true your.main.Class   ../conf/     

Обновление: вот как фильтровать путь к classу в пользовательский манифест.

Целевая точка сборки maven-dependency-plugin может быть настроена так, чтобы выводить путь к classу в файл в формате свойств (т.е. classpath = [classpath]). Затем вы настраиваете элемент фильтров для использования сгенерированного файла пути к classам и настраиваете каталоги ресурсов для фильтрации.

Например:

    maven-dependency-plugin 2.1   generate-resources  build-classpath     true ${project.build.directory}/classpath.properties    maven-jar-plugin    ${project.build.outputDirectory}/META-INF/MANIFEST.MF       ${project.build.directory}/classpath.properties    src/main/resources true    

Затем укажите в src / main / resources / META-INF / Manifest.MF следующее:

 Bundle-Version: 4.0.0 ... Classpath: ${classpath};[specify additional entries here] 

Примечание: в этой обработке есть ошибка с использованием стандартного разделителя пути windows ( \ ), путь генерации лишен разделителей (обратите внимание, что он отлично работает в Linux). Вы можете корректно генерировать \\\\ для Windows, указав \\\\ в конфигурации цели build-classpath \\\\ .


Вы можете настроить манифест в конфигурации jar-plugin . Чтобы сделать это, вы добавите что-то подобное вашему pom.

  org.apache.maven.plugins maven-jar-plugin ...   true  true   development ${pom.url} value    ...  

Полная спецификация архиватора предоставляет довольно много вариантов. См. Страницу примеров для параметров настройки пути к classам.

Если ни одно из них не работает для вас, вы можете определить свой собственный манифест , настроить свойства, содержащие требуемые записи, и использовать фильтр для заполнения манифеста с этими свойствами

Попробуйте сделать это, как в этой ошибке, т.е. объединить записи, используя manifestEntries / Class-Path

https://issues.apache.org/jira/browse/MJAR-41

  • Как включить путь к библиотекам в g ++
  • Почему sudo меняет PATH?
  • Команда bash / fish для печати абсолютного пути к файлу
  • Являются ли "{Binding Path =.}" И "{Binding}" действительно равными
  • Как анимировать путь на canvasе - андроид
  • Преобразование абсолютного пути в относительный путь с учетом текущего каталога с использованием Bash
  • Получение относительного виртуального пути с физического пути
  • Абсолютный путь и относительный путь
  • Абсолютный путь назад к веб-пути
  • Надежный способ для сценария bash получить полный путь к самому себе?
  • Кордова не может добавить Android с кодом выхода ENOENT
  • Давайте будем гением компьютера.