Две отдельные банки с Maven - PullRequest
       26

Две отдельные банки с Maven

1 голос
/ 19 декабря 2011

Я хочу использовать Maven для создания двух отдельных jar-файлов для моего проекта.

Тот, который будет включать все в пакете **/client, и тот, который будет включать все в пакете **/server. Клиентский пакет также должен содержать источники.

Вопрос 1: Как я могу настроить мой пом для производства этих двух отдельных банок?

Вопрос 2: возможно ли создать оба с помощью одной команды maven?

Любая помощь приветствуется.

Большое спасибо!

Ответы [ 3 ]

8 голосов
/ 19 декабря 2011

Мой совет - реорганизовать проекты в отдельный клиент и отдельный сервер проект соответственно. Добавив проект multi mudule (прокрутка вниз), содержащий оба проекта, можно собрать клиента и сервер в одну команду.

0 голосов
/ 20 декабря 2011

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

Вот как это происходит:

Я создал два отдельных дескриптора сборки.Во-первых, ${basedir}/src/main/assembly/client.xml (src/main/assembly, по-видимому, стандартное место для дескрипторов сборки Maven)

<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>client</id>

    <formats>
        <format>jar</format>
    </formats>

    <includeBaseDirectory>false</includeBaseDirectory>

    <fileSets>
        <fileSet>
            <directory>${project.build.directory}/classes</directory>
            <outputDirectory>/</outputDirectory>
            <includes>
                <include>**/client/**</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>${project.basedir}/src/main/java</directory>
            <outputDirectory>/</outputDirectory>
            <useDefaultExcludes>false</useDefaultExcludes>
            <includes>
                <include>**/client/**</include>
            </includes>
        </fileSet>
    </fileSets>

</assembly>

, затем ${basedir}/src/main/assembly/server.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>server</id>

    <formats>
        <format>jar</format>
    </formats>

    <includeBaseDirectory>false</includeBaseDirectory>

    <fileSets>
        <fileSet>
            <directory>${project.build.directory}/classes</directory>
            <outputDirectory>/</outputDirectory>
            <includes>
                <include>**/server/**</include>
            </includes>
        </fileSet>
    </fileSets>

</assembly>

и добавил следующее к моему pom.xml:

        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.2.2</version>
            <configuration>
                <descriptors>
                    <descriptor>src/main/assembly/client.xml</descriptor>
                    <descriptor>src/main/assembly/server.xml</descriptor>
                </descriptors>
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

беги mvn package ... ааа и вуаля !!!Одна команда ... два JAR! ... так легко, что я хочу плакать все время, потраченное на поиски решения.

[INFO] --- maven-assembly-plugin:2.2.2:single (default) @ [my project] ---
[INFO] Reading assembly descriptor: src/main/assembly/client.xml
[INFO] Reading assembly descriptor: src/main/assembly/server.xml
[INFO] Building jar: [my project]-1.0-SNAPSHOT-client.jar
[INFO] Building jar: [my project]-1.0-SNAPSHOT-server.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 8.202s
[INFO] Finished at: Mon Dec 19 23:43:52 EET 2011
[INFO] Final Memory: 26M/245M
[INFO] ------------------------------------------------------------------------
0 голосов
/ 19 декабря 2011

Вы хотели бы использовать профили для достижения этой цели.Пожалуйста, смотрите http://maven.apache.org/guides/mini/guide-building-for-different-environments.html

Я не уверен, что вы можете легко упаковать обе команды одной командой.

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