我有多模块项目。每个模块都有优点和集成测试。
我能够使用以下插件将模块(包含包含所有依赖项的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>
然后使用Integrationtest_runner.sh脚本运行测试。它包含以下maven命令
mvn surefire:test -Denv=test -f pom.xml
surefire插件的用法。
<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)如何使用模块而不是maven存储库中的本地依赖项(存在于module \ lib中)。
2)如何等待jenkins构建,直到服务器返回测试结果。
3)无法根据条件构建jenkins。
尝试以下选项,但问题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>