Динамическое добавление файла в архив продукта, созданный Tycho

Добавление файла в архив дистрибутива продукта, созданного с помощью Maven/Tycho, возможно: см. эту ссылку

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


person user2545378    schedule 10.07.2013    source источник
comment
Что значит не всегда в одном и том же месте? Как связанная статья относится к вашему вопросу? Убедитесь, что вы предоставили достаточно подробностей, чтобы люди могли понять, о чем вы спрашиваете. Сейчас это не так.   -  person oberlies    schedule 11.07.2013
comment
Редактировать сделано. Лучше для тебя?   -  person user2545378    schedule 11.07.2013
comment
Становится лучше... Архивом вы называете архив дистрибутива продукта (т.е. zip/tar с установкой Eclipse), верно? Может ли ваш динамический механизм установить свойство в модели Maven?   -  person oberlies    schedule 11.07.2013
comment
:). Правильно, я имею в виду архив дистрибутива продукта. Если я понял ваш вопрос, файл не важен во время процесса Maven, важно просто запустить приложение.   -  person user2545378    schedule 12.07.2013
comment
Что динамического в добавляемом файле? Например. меняется ли содержимое файла между сборками? Или имя файла?   -  person oberlies    schedule 15.07.2013
comment
Да, версия файла изменится, поэтому он будет перемещен.   -  person user2545378    schedule 19.07.2013
comment
Я собираюсь кое-что попробовать (используйте жизненный цикл maven для запуска класса Java, который будет включать файл). но если вы найдете что-то лучше, продолжайте :)   -  person user2545378    schedule 19.07.2013
comment
Извините, мне потребовалось время, чтобы написать ответ. Это решает вашу проблему? (Если ответ да, вы должны принять ответ, поставив галочку рядом с вопросом.) Это лучше, чем то, что вы нашли сами? (Если решение тоже было хорошим, вы можете записать его как другой ответ.)   -  person oberlies    schedule 13.08.2013
comment
Извините, я работал над другими вещами. Файл, который я хочу добавить в свой архив продукта, является лицензией, поэтому мне нужен Maven или Tycho, чтобы выбрать этот файл среди других по дате. Например, я хотел бы добавить только последний. Более того, мне нужно, чтобы мой файл лицензии находился в другом месте, а не в target/rootfiles.   -  person user2545378    schedule 22.08.2013
comment
Добавьте цели в pom.xml сборки функций, чтобы файлы, которые вы хотите включить в архив дистрибутива, копировались/добавлялись в папку target/rootfiles во время сборки. Если вы не знаете, как это сделать, задайте новый вопрос.   -  person oberlies    schedule 22.08.2013
comment
Когда в продукт будет добавлена ​​функция с конфигурацией корневых файлов, файлы, которые вы поместили в target/rootfiles, попадут в архив дистрибутива продукта. так например файл, скопированный в target/rootfiles/foo/bar.txt, в конечном итоге станет foo/bar.txt в продукте.   -  person oberlies    schedule 22.08.2013
comment
Я использовал процесс, который вы описали в своем ответе, но здесь все по-другому. Я не хочу выбирать файл вручную (или добавлять его в корневые файлы). Я хотел бы знать, можно ли выбрать файл среди других по его дате (самый последний) и затем добавить в архив. Важный факт: как выбрать конкретный файл, а не все файлы? (потому что, если я добавлю x файлов в целевую папку, они все будут использоваться, не так ли?)   -  person user2545378    schedule 22.08.2013
comment
Как выбрать конкретный файл, а не все файлы? Вы не получите от меня никакого другого ответа на этот вопрос, но найдите цель Maven, которая выбирает нужные вам файлы и копирует их в target/rootfiles Остальное объясняется в моем ответе.   -  person oberlies    schedule 22.08.2013
comment
Кажется, мне трудно объяснить мою проблему.   -  person user2545378    schedule 23.08.2013
comment
Так что, если мне удастся решить это самостоятельно, я вернусь, чтобы опубликовать ответ. Спасибо за терпеливость.   -  person user2545378    schedule 23.08.2013
comment
Я создал моджо, чтобы добавить файлы. Сложность заключалась в том, что файлы для добавления зависели от продукта.   -  person user2545378    schedule 09.09.2013


Ответы (1)


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

Чтобы добавить файл в архив дистрибутива продукта, включите его как корневые файлы в одну из функций, включенных в ваш продукт:

  1. В build.properties сборки функции добавьте строку root=file:target/rootfiles/**
  2. Добавьте цели в pom.xml сборки функций, чтобы файлы, которые вы хотите включить в архив дистрибутива, копировались/добавлялись в папку target/rootfiles во время сборки. Например. maven-resources-plugin или maven-dependency-plugin может сделать это.

Когда в продукт будет добавлена ​​функция с конфигурацией корневых файлов, файлы, которые вы поместили в target/rootfiles, окажутся в архиве дистрибутива продукта.

Если у вас есть проблемы с этим, вы также можете взглянуть на этот пример проекта.

person oberlies    schedule 26.07.2013
comment
пример, похоже, берет файлы непосредственно из rootfiles/ без копирования и любых других плагинов maven. это сработает? - person oers; 17.03.2014
comment
@oers Конечно, вы, конечно, также можете включать статические файлы, которые являются частью исходников, например. напрямую из rootfiles. - person oberlies; 19.03.2014
comment
Есть ли способ изменить файл, когда он скопирован в архивный файл дистрибутива? Я помещаю сценарий оболочки в свое приложение и не хочу, чтобы пользователю приходилось вручную запускать chmod. Я попытался настроить метаданные с помощью файла p2.inf в этой функции, но я не могу заставить его работать, как с файлами, которые остаются внутри определенного устанавливаемого модуля. - person MidnightJava; 30.07.2016
comment
Ответ на мой вопрос выше находится в примере проекта, связанного с ответом (пример-функция). Вот ссылка с некоторыми пояснениями к примеру, показывающая, как установить разрешения в нижней части статьи: wiki.eclipse.org/Tycho/Demo_Projects/RCP_Application. - person MidnightJava; 30.07.2016
comment
Мой вопрос похож на @oers. Возможно ли, что rootfiles не статичны, но они появляются во время сборки maven? - person GLampros; 28.02.2020