Изтегляне на всички зависимости, зависимости на плъгини, компилатори и т.н. с Maven?

Изпичам изображение на Docker, което изпълнява задача на Maven по време на изпълнение. Изглежда някак така:

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

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

По време на изпълнение стартирам mvn gatling:execute, за да стартирам помощна програма за тестване на натоварване.

Моят POM изглежда така:

<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
Нещо като ‹execution›‹phase›integration-test‹/phase›‹goals›‹goal›execute‹/goal›‹/goals›‹/execution›   -  person Trent Bartlem    schedule 28.10.2015
comment
Проблемът е, че не мога да стартирам gatling:execute без масово pwning крайна точка ;)   -  person Naftuli Kay    schedule 28.10.2015
comment
Това е разбираемо, но не е проблем, ако не преминете фазата на mvn пакета. Независимо от това, приставката за зависимости на maven намери ли зависимостите на Gatling, ако са обвързани с фаза?   -  person Trent Bartlem    schedule 28.10.2015
comment
@TrentBartlem Можете ли да изпратите това като отговор за това как трябва да променя своя pom?   -  person Naftuli Kay    schedule 28.10.2015
comment
@NaftuliTzviKay каква е целта ти? Искате ли да разпространите това изображение (напр. в компанията) или искате да го използвате като среда за компилация и не искате да изтегляте едни и същи неща с всяка компилация? Ако е последното, можете да поставите вашата директория на maven repository в том на докер.   -  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, за да опаковате буркан с всички зависимости и да изпълните gatling runner от него.

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