У меня есть многомодульный проект. Каждый модуль имеет джунты и интеграционные тесты.
Я могу развернуть модуль (он содержит папку lib, которая содержит все зависимости, конфигурационную папку, тестовую папку, которая содержит тестовые классы и файлы поддержки) на сервер, используя следующий плагин.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>${maven.antrun.plugin}</version>
<dependencies>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant-jsch</artifactId>
<version>1.9.9</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>integration-test</id>
<phase>install</phase>
<configuration>
<target name="integrationTest">
<macrodef name="integrationTest">
<attribute name="adapter"/>
<sequential>
<!--@formatter:off-->
<tar tarfile="${basedir}/target/test-integration-src.tar.gz" compression="gzip" longfile="gnu">
<tarfileset dir="${basedir}/target/test-integration-src" mode="750" prefix="test-integration-src">
<include name="**/*"/>
<exclude name="**/*.java"/>
</tarfileset>
</tar>
<echo message="Installing ${basedir}/target/@{adapter}-${project.version}.tar.gz in test server ${test.server.host} ."/>
<scp todir="${test.server.user}@${test.server.host}:${test.server.installDir}"
sftp="true"
failonerror="false"
trust="true"
verbose="true"
filemode="750"
password="${test.server.password}">
<fileset dir="${basedir}/target">
<include name="@{adapter}-${project.version}.tar.gz"/>
</fileset>
</scp>
<sshexec trust="yes" host="${test.server.host}"
username="${test.server.user}"
password="${test.server.password}"
command="tar -zxvf ${test.server.installDir}/@{adapter}-${project.version}.tar.gz -C ${test.server.installDir} && rm ${test.server.installDir}/@{adapter}-${project.version}.tar.gz"/>
<scp todir="${test.server.user}@${test.server.host}:${test.server.installDir}/@{adapter}-${project.version}"
sftp="true"
failonerror="false"
verbose="true"
filemode="750"
password="${test.server.password}">
<fileset dir="${basedir}/target">
<include name="test-integration-src.tar.gz"/>
</fileset>
</scp>
<sshexec trust="yes" host="${test.server.host}"
username="${test.server.user}"
password="${test.server.password}"
command="${test.server.installDir}/integrationtest_runner.sh @{adapter}-${project.version}"/>
<!--@formatter:on-->
</sequential>
</macrodef>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
затем запустите тесты с использованием сценария интеграцииtest_runner.sh. он содержит следующую команду maven
mvn surefire:test -Denv=test -f pom.xml
верный плагин.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version>
<configuration>
<reuseForks>false</reuseForks>
<argLine>-javaagent:${basedir}/lib/spring-agent-${version.spring}.jar
</argLine>
</configuration>
</plugin>
Он работает успешно, если репозиторий maven имеет все зависимости.
Теперь мой вопрос:
1) Как использовать локальные зависимости (присутствующие в модуле \ lib) из модуля вместо репозитория maven.
2) Как дождаться сборки jenkins, пока сервер не вернет результаты теста.
3) не удается построить сборку Дженкинса в зависимости от состояния.
попробовал вариант ниже, но не повезло с вопросом 1:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version>
<configuration>
<reuseForks>false</reuseForks>
<argLine>-javaagent:${basedir}/lib/spring-agent-${version.spring}.jar
</argLine>
<additionalClasspathElements>
<additionalClasspathElement>${basedir}/lib/*.jar</additionalClasspathElement>
</additionalClasspathElements>
<useManifestOnlyJar>false</useManifestOnlyJar>
<useSystemClassLoader>false</useSystemClassLoader>
</configuration>
</plugin>