Создание автономного исходного релиза с Maven - PullRequest
5 голосов
/ 09 июля 2009

До сих пор мы использовали муравья в моей компании. Когда бы мы ни захотели отправить приложение клиенту, мы запускаем специальный скрипт Ant, который упаковывает весь наш исходный код со всеми библиотеками jar и самим Ant вместе с простым пакетным файлом.

Затем клиент может поместить файлы на компьютер без доступа к сети вообще (и даже не с Ant) и запустить пакетный файл. Пока на компьютере установлен допустимый JDK, пакетный скрипт будет компилировать весь код с использованием jar-файлов и создавать WAR / EAR, который в конечном итоге будет развернут клиентом на сервере приложений.

В последнее время мы мигрировали в Maven 2. Но я не нашел способа сделать то же самое. Я видел сборочный плагин Maven, но он просто создает исходные или двоичные дистрибутивы. Наш сценарий на самом деле представляет собой смесь, поскольку он содержит наш исходный код, но двоичные файлы библиотек, которые мы используем (например, Spring, Hibernate)

Так возможно ли с Maven создать автономную сборку / выпуск / пакет, который можно запускать на компьютере без доступа к сети вообще ??? Это означает, что все библиотеки должны содержаться внутри.

Дополнительный бонус, если внутри находится сам Maven, но это не является строгим требованием. Окончательный пакет должен быть легко скомпилирован одной командой (легко для системного администратора).

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

Ответы [ 5 ]

2 голосов
/ 14 июля 2009

Из вашей среды разработки, если вы включите в плагин сборки следующие компоненты

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
    </configuration>
</plugin>

и вызовите mvn assembly: assembly, вы получите вашApp-version-with-dependencies.jar в целевой папке. Это самодостаточная банка, и с записью в главном классе MANIFEST.MF любой может дважды щелкнуть и запустить приложение.

1 голос
/ 10 июля 2009

Вы можете попробовать этот подход:

  • Используйте mvn ant: ant для создания сборки ant скрипты из проекта maven
  • Убедитесь, что ant является зависимостью проекта
  • Используйте сборку для сборки муравья
    система

или план b:

  • Используйте mvn ant: ant для создания ant build скрипты из проекта maven
  • Убедитесь, что ant является зависимостью проекта
  • Напишите «класс начальной загрузки» для вызова Ant и запустите сборку
  • Используйте appassembler для создания Сценарий сборки и установки среды

В плане b вы должны написать сценарии для настройки дерева исходных кодов где-нибудь из упакованных исходных jar-файлов, а затем использовать сценарии appassembler build bat или sh для вызова начальной загрузки и сборки через ant. Ваш загрузчик может делать все, что вам нужно сделать до или после сборки.

Надеюсь, это поможет.

0 голосов
/ 13 июля 2009

Вот как я это делаю ... в части сборки pom добавьте:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <executions>
                <execution>
                    <id>attach-sources</id>
                    <phase>verify</phase>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

А затем в разделе профилей добавить этот бит в:

<profiles>
        <profile>
            <id>release</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

И когда я делаю maven установку, он создает банку, а также проверяет банку с источником.

0 голосов
/ 10 июля 2009

плагин исходного кода выдаст вам jar-файл, содержащий источник задачи "source: jar". затем вы можете использовать плагин сборки, чтобы объединить исходные файлы из ваших внутренних проектов (используя источники для ссылки на эти исходные файлы) и двоичные файлы из внешних проектов в один дистрибутив.

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

0 голосов
/ 09 июля 2009

Возможно, ответ, который я представил на аналогичный вопрос, мог бы помочь. См. Может ли maven собрать все зависимые файлы jar для проекта, чтобы помочь с развертыванием приложения? Единственный недостаток - как включить исходный код в сборку. Я должен представить, что есть какой-то способ управлять этим с плагином сборки. Это также не касается включения Maven в дистрибутив.

В чем причина перехода из Муравья в Мавен? Похоже, у вас все хорошо сработало с решением Ant, так что же Maven покупает у вас здесь?

Если это просто управление зависимостями, то есть методик использования Maven из Ant , которые дадут вам лучшее из обоих миров.

...