Построение толстой банки Maven условно

Я следовал примеру в Построение толстой банки с использованием maven, и теперь я могу запустить следующее для сборки/тестирования и установки моих банок.

mvn clean compile install

Однако install теперь занимает намного больше времени, потому что теперь мы строим толстую банку. Возможно ли иметь две версии установки, где одна просто создает банки без зависимостей, а другая делает это и, кроме того, создает толстую банку, например:

mvn clean compile install
mvn clean compile install-fatjar

Я знаю, что install-fatjar не является допустимой фазой, но просто хочу дать представление о том, чего я пытаюсь достичь, то есть об условной установке, при которой толстая банка создается только тогда, когда предоставляется опция.


person Delip    schedule 28.08.2013    source источник


Ответы (2)


Создайте профиль для толстой банки и настройте плагин сборки maven для создания толстой банки в этом профиле.

Например, используйте этот профиль:

<profiles>
    <profile>
        <id>fatjar</id>
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <configuration>
                        <archive>
                            <manifest>
                                <mainClass>fully.qualified.MainClass</mainClass>
                            </manifest>
                        </archive>
                        <descriptorRefs>
                            <descriptorRef>jar-with-dependencies</descriptorRef>
                        </descriptorRefs>       
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

Затем вы можете построить его, активировав профиль

mvn -P fatjar clean install

где fatjar — идентификатор профиля.

Также можно активировать несколько профилей.

mvn -P fatjar,release install
person René Link    schedule 28.08.2013

Обычно мы не используем банку с жиром (или убер-банку) в качестве основного артефакта.

Вы можете использовать плагин Assembly или Shade, чтобы создать вариант артефакта (с другим классификатором), который представляет собой uber-jar.

Настоятельно рекомендуется оставить ваш «обычный» артефакт как есть. Если вы хотите использовать uber-jar только изредка, поместите использование плагина сборки / тени для создания «uber-jar» в профиль и активируйте профиль, когда захотите. Тем не менее, это все равно должно генерировать вам «дополнительную» убер-банку вместо того, чтобы делать ваш основной артефакт убер-банкой.

person Adrian Shum    schedule 28.08.2013
comment
Спасибо, ваше предложение было правильным. Принятие ответа Рене, поскольку у него есть ответ, который люди могут использовать напрямую. - person Delip; 28.08.2013