Как запустить сборку дважды, чтобы я мог получить два артефакта, используя разные зависимости? - PullRequest
1 голос
/ 08 декабря 2011

У меня есть проект Maven, и мы хотим создать два отдельных jar-файла, один из которых содержит 32-битные библиотеки, а другой - 64-битные библиотеки.

Наша текущая сборка будет производить 32- или 64-битные артефакты в зависимости от операционной системы, в которой выполняется сборка.

Обзор того, как мы в настоящее время настроены:

    <properties>
            <env.arch>${sun.arch.data.model}</env.arch>
    </properties>

    <build>
    <pluginManagement>

    <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
              <execution>
                    <id>copy-native</id>
                    <phase>process-resources</phase>
                    <goals>
                        <goal>copy</goal>
                    </goals>
                    <configuration>
                    <artifactItems>
                    <artifactItem>
                        <groupId>artifact-for-${env.arch}</groupId>
                        <artifactId>artifact.name</artifactId>
                    </artifactItem>
                        ...

                   <plugin>
                       <artifactId>maven-jar-plugin</artifactId>
                       <executions>
                           <execution>
                               <phase>package</phase>
                           </execution>
                       </executions>

Итак, он копирует зависимости, которые соответствуют значению нашего свойства для ${env.arch}, а затем создает jar с помощью maven-jar-plugin.

Что нам нужно сделать, так это создать 2 баночки из одной сборки ... один, содержащий 32-битные зависимости, и другой, содержащий 64-битные зависимости.

Может кто-нибудь предложить какое-нибудь руководство, как мы можем это сделать?

Спасибо

1 Ответ

2 голосов
/ 08 декабря 2011

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

Вы также можете просто установить свойство в профилях и использовать его позже в разделе зависимостей вместо переменной среды.

Вы также можете активировать профили на основе архитектуры текущей системы, чтобы иметь рабочий вариант по умолчанию:

<profile>
    <activation>
        <os>
            <arch>x86</arch>
        </os>
    </activation>
    ...
</profile>

Все варианты активации описаны на этой странице .

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