Загрузить все зависимости, зависимости плагинов, компиляторы и т. д. с помощью Maven?

Я выпекаю образ Docker, который запускает задачу Maven во время выполнения. Это выглядит примерно так:

ADD pom.xml /srv
ADD src /srv/src

WORKDIR /srv
RUN mvn dependencies:go-offline scala:testCompile

Во время выполнения я запускаю mvn gatling:execute для запуска утилиты нагрузочного тестирования.

Мой ПОМ выглядит так:

<project>
  <dependencies>
        <dependency>
            <groupId>io.gatling</groupId>
            <artifactId>gatling-core</artifactId>
            <version>${gatling.version}</version>
        </dependency>
        <dependency>
            <groupId>io.gatling</groupId>
            <artifactId>gatling-http</artifactId>
            <version>${gatling.version}</version>
        </dependency>
        <dependency>
            <groupId>io.gatling</groupId>
            <artifactId>gatling-app</artifactId>
            <version>${gatling.version}</version>
        </dependency>
        <dependency>
            <groupId>io.gatling.highcharts</groupId>
            <artifactId>gatling-charts-highcharts</artifactId>
            <version>${gatling.version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>net.alchim31.maven</groupId>
                <artifactId>scala-maven-plugin</artifactId>
                <version>${scala-maven-plugin.version}</version>
            </plugin>
            <plugin>
                <groupId>io.gatling</groupId>
                <artifactId>gatling-maven-plugin</artifactId>
                <version>${gatling-plugin.version}</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>execute</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

Что я хочу, так это то, что когда я в конечном итоге запущу mvn gatling:execute, я не хочу загружать какие-либо зависимости, я хочу, чтобы они все были встроены в образ во время сборки.

Однако даже выполнение mvn dependencies:go-offline scala:testCompile не доводит меня до конца. Запуск gatling:execute по-прежнему требует загрузки дополнительных зависимостей.

Как я могу загрузить абсолютно все, что требуется Maven, в мой образ Docker, чтобы не требовалось никаких загрузок во время выполнения?


person Naftuli Kay    schedule 28.10.2015    source источник
comment
Пробовали ли вы привязать выполнение Gatling к фазе и посмотреть, подхватит ли его dependencies:go-offline?   -  person Trent Bartlem    schedule 28.10.2015
comment
Что ты предлагаешь? Извините, долгий день, не уверен, что именно вы имеете в виду.   -  person Naftuli Kay    schedule 28.10.2015
comment
Что-то вроде ‹исполнение›‹фаза›интеграционное тестирование‹/фаза›‹цели›‹цель›выполнение‹/цель›‹/цели›‹/исполнение›   -  person Trent Bartlem    schedule 28.10.2015
comment
Проблема в том, что я не могу запустить gatling:execute без массового взлома конечной точки;)   -  person Naftuli Kay    schedule 28.10.2015
comment
Это понятно, но не проблема, если вы не прошли стадию пакета mvn. Независимо от этого, нашел ли плагин зависимостей maven зависимости Gatling, если они привязаны к фазе?   -  person Trent Bartlem    schedule 28.10.2015
comment
@TrentBartlem Можете ли вы отправить это как ответ на то, как мне изменить свой помпон?   -  person Naftuli Kay    schedule 28.10.2015
comment
@NaftuliTzviKay какова твоя цель? Вы хотите распространять этот образ (например, в компании) или хотите использовать его в качестве среды сборки и не хотите загружать одно и то же с каждой сборкой? Если это последнее, вы можете поместить каталог репозитория maven в том докера.   -  person ivant    schedule 28.10.2015
comment
@ivant Я хочу распространять образ Docker, который запускает mvn gatling:execute, но я бы хотел, чтобы все зависимости были скомпилированы в образ во время сборки, а не во время выполнения. Я бы хотел избежать ожидания загрузки Maven из Интернета во время запуска контейнера Docker.   -  person Naftuli Kay    schedule 28.10.2015
comment
Я думаю, вы имеете в виду dependency:go-offline, верно? Обычно maven проверяет зависимости SNAPSHOT один раз в день. У вас есть? Также попробуйте включить автономный режим при запуске execute: mvn -o gatling:execute.   -  person ivant    schedule 28.10.2015
comment
@NaftuliTzviKay сделал то, что я предложил в моем предыдущем комментарии, для вас?   -  person ivant    schedule 30.10.2015


Ответы (2)


Вам не обязательно запускать симуляцию с плагином maven, не так ли? Вы можете использовать maven, чтобы упаковать банку со всеми зависимостями и запустить из нее бегун гатлинга.

person Mykola Gurov    schedule 07.11.2015
comment
Я знаю. Мне нужно было что-то быстрое, я не хотел возиться с плагином сборки maven весь день, пытаясь правильно упаковать и запустить приложение Scala. - person Naftuli Kay; 08.11.2015

Вы можете загрузить все зависимости, используя: mvn dependency:copy-dependencies

После этого все зависимости вашего проекта будут доступны в папке ./target/dependency/.

person aholub7x    schedule 23.02.2016