Maven: выпуск одного файла, установка окончаний строк

#maven #nexus #maven-assembly-plugin #line-endings #build-helper-maven-plugin

#maven #nexus #maven-assembly-плагин #окончания строк #build-helper-maven-plugin

Вопрос:

Я хотел бы выпустить один файл в репозиторий Nexus (сценарий развертывания, sh), и для этой цели я использую

 build-helper-maven-plugin:attach-artifact
  

В отличие от плагина сборки Maven, он не имеет явной опции для установки окончания строки развернутого файла. Как я могу решить задачу с помощью этого или другого плагина.

Важно: мне нужен файл, развернутый как .sh, а не как архив. В противном случае можно переключиться на плагин сборки Maven.

Комментарии:

1. Maven-assembly-plugin имеет формат dir , который представляет собой просто структуру папок на жестком диске, которую вы можете использовать для копирования скрипта sh в эту папку и преобразования linenendings и использования build-helper-maven-plugin для последующего прикрепления этого артефакта.

2. @khmarbaise Это определенно заслуживает одобрения. Не могли бы вы преобразовать его в ответ, пожалуйста.

3. Я добавил его в качестве ответа.

Ответ №1:

Позвольте мне поделиться окончательным решением. Я надеюсь, что однажды это кому-нибудь поможет…

pom.xml

 <build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <descriptors>
                        <descriptor>deploy-script-assembly.xml</descriptor>
                    </descriptors>
                </configuration>
                <executions>
                    <execution>
                        <id>deploy-script-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <version>1.9</version>
                <executions>
                    <execution>
                        <id>attach-artifacts</id>
                        <phase>package</phase>
                        <goals>
                            <goal>attach-artifact</goal>
                        </goals>
                        <configuration>
                            <artifacts>
                                <artifact>
                                    <file>${build.directory}/${project.artifactId}-${project.version}-single/deploy-script.sh</file>
                                    <type>sh</type>
                                </artifact>
                            </artifacts>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
...
</plugins>
</build>
  

deploy-script-assembly.xml

 <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">

    <id>single</id>

    <formats>
        <format>dir</format>
    </formats>

    <includeBaseDirectory>false</includeBaseDirectory>

    <files>
        <file>
            <source>deploy-script.sh</source>
            <outputDirectory>/</outputDirectory>
            <lineEnding>unix</lineEnding>
        </file>
    </files>

</assembly>
  

Ответ №2:

Maven-assembly-plugin имеет формат dir, который представляет собой просто структуру папок на жестком диске, которую вы можете использовать для копирования скрипта sh в эту папку и преобразования linenendings и использования build-helper-maven-plugin для последующего прикрепления этого артефакта.

Комментарии:

1. Я думаю, что это сложно. Это должно быть решено проще. См . jira.codehaus.org/browse/MRESOURCES-179 (Пожалуйста, проголосуйте за это).