Как вы создаете сборку maven, которая включает в себя сценарии оболочки и файл свойств, не в банке? - программирование
Подтвердить что ты не робот

Как вы создаете сборку maven, которая включает в себя сценарии оболочки и файл свойств, не в банке?

Я пытаюсь использовать Maven для создания автономного приложения

Использование плагина сборки, описанного в Как создать автономное приложение с зависимостями без изменений с помощью Maven?

Это создает zip-дистрибутив, содержащий

widget-1.0
widget-1.0/lib/widget.jar
widget-1.0/lib/3rdpartyjar1.jar
widget-1.0/lib/3rdpartyjar2.jar

...

но в моем src-дереве я:

src/main/bin/widget.sh 

и это не делает окончательного распространения zip, я бы хотел, чтобы он пошел сюда

widget-1.0/widget.sh

Также в моем дереве src у меня есть файл свойств в

src/main/properties/widget.properties

который в настоящее время пробивается в

widget-1.0/lib/widget.jar

но поскольку я хочу, чтобы он редактировался, я хочу, чтобы он находился в

widget-1.0/widget.properties

Можно ли сделать это в maven?

ИЗМЕНИТЬ Использование информации в блоге стало работать следующим образом:

  • Переименованная папка bin в папку сценариев, поскольку это стандартное имя Maven
  • Перемещено widget.properties в папку script
  • Модифицировал мой файл assembly.xml для хранения набора файлов

Вот новый xml

<?xml version="1.0" encoding="UTF-8"?>
<assembly
    xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
    <id>distribution</id>
    <formats>
        <format>zip</format>
    </formats>
    <dependencySets>
        <dependencySet>
            <scope>runtime</scope>
            <outputDirectory>lib</outputDirectory>
            <unpack>false</unpack>
        </dependencySet>
    </dependencySets>
    <fileSets>
        <fileSet>
            <directory>${project.build.scriptSourceDirectory}</directory>
            <outputDirectory></outputDirectory>
            <includes>
                <include>widget.sh</include>
                <include>widget.properties</include>
            </includes>
        </fileSet>
    </fileSets>
</assembly>

Однако незначительная точка, но не в состоянии найти список переменных переменных maven в любом месте, т.е. существует эквивалент ${project.build.scriptSourceDirectory} для папки свойств

4b9b3361

Ответ 1

Я нашел это сообщение в блоге, чтобы быть хорошим учебником о том, как это сделать.

Кроме того, я думаю, что имя папки, в которую вы размещаете файлы, имеет значение. Maven, очевидно, делает разные вещи с файлами в src/main/java, чем с файлами в src/main/resources. Я не уверен на 100%, но имя этой папки может означать разницу между файлом, заключенным внутри банки, или нет.

Здесь - список свойств имени каталога Maven.