Создать дистрибутив из проекта Maven - PullRequest
2 голосов
/ 23 сентября 2011

Я хочу построить дистрибутив приложения с Maven. У меня есть модуль в моем проекте, который содержит основной исходный код. Я решил собрать дистрибутив приложения из этого модуля. Я говорю maven в POM модуля, чтобы он скопировал все файлы конфигурации и зависимые библиотеки в каталог target/. Моя проблема в том, что Maven хранит все временные каталоги, связанные со сборкой (например, classes, generated-sources, maven-archiver), в целевом каталоге. Я не хочу автоматически удалять их по крайней мере во время фазы install. Как я могу достичь этого? Если я добавлю maven-clean-plugin в конец сборки, похоже, что Maven всегда удаляет весь каталог target, независимо от того, кто я пытаюсь исключить файлы, которые я пытаюсь сохранить.

Ответы [ 2 ]

2 голосов
/ 23 сентября 2011

попробуйте это в вашей поме

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.2-beta-4</version>
    <executions>
        <execution>
            <id>user_distribution</id>
            <phase>package</phase>
            <goals>
                <goal>attached</goal>
            </goals>
            <configuration>
                <descriptors>
                    <descriptor>src/main/assembly/dist.xml</descriptor>
                </descriptors>
            </configuration>
        </execution>
    </executions>
</plugin>

и вот XML

<?xml version="1.0" encoding="UTF-8"?>
<assembly xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/xsd/assembly-1.1.1.xsd">

    <id>dist</id>
    <formats>
        <format>zip</format>
    </formats>
    <files>
        <file>
            <source>target/${pom.artifactId}-${pom.version}.jar</source>
            <outputDirectory>lib/</outputDirectory>
        </file>
    </files>
    <fileSets>
        <fileSet>
            <directory>directory to be included</directory>
            <outputDirectory>/</outputDirectory>
            <includes>
                <include>file name to be included</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>another directory to be included</directory>
            <outputDirectory>/</outputDirectory>
        </fileSet>
    </fileSets>
</assembly>
0 голосов
/ 23 сентября 2011

Я говорю maven в POM модуля, чтобы скопировать всю конфигурацию файлы и зависимые библиотеки в target / directory

Как ты это делаешь?

Исходя из вопроса, похоже, вам нужно меньше беспокоиться о выборочном удалении содержимого целевой папки (что можно сделать, настроив maven clean plugin ), но создав дистрибутив с использованием maven сборочный плагин (как указано @Scorpion).

Последний позволяет объединять все артефакты проекта, включая зависимости, в zip или другие форматы, которые затем могут быть легко использованы разработчиками. Возможно, вы захотите отделить это от обычной сборки, используя отдельный profile, чтобы дистрибутив создавался только по необходимости.

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