【已解决】 关于配置构建后的邮件提醒,主要的坑有两个:
【已解决】 在构建 maven 项目的时候,不支持 Java8 中的 lambda 表达式。
这个点也困扰了我很久。一开始我以为是我没有在 Jenkins 中配置 jdk 的原因,我在 Jenkins 配置了各种 jdk 始终不能解决这个问题。后来,怀疑是代码的 pom 文件中没有添加编译的插件导致,我在 pom 后面添加了支持的 java8 的插件还是不可以。后来把编译插件的版本降了几个,降了几个,降了几个 ,居然又可以了。编译插件如下:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
【已解决】 Jenkins 构建报错
/var/jenkins_home/workspace/test_test/src/test/java/com/sayyoo/auto/autotest/SubLetContractTest.java:[206,18] error: cannot find symbol 通过对比发现是因为在这个类中使用了 Lombok 注解,导致 maven 编译报错,从而导致 mvn compiler 的时候报错。有两种方法结局:
2.(推荐)提高 maven-compiler-plugin 的版本
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
我觉这个问题其实也 不难解决,主要问题在于自己在 docker 运行 jenkins 的时候,没有挂载 docker 目录到宿主机上,导致自己设置的 目录是宿主机的目录 ,但是 jenkins 运行在 docker 中。所以注意在安装的时候,就要把文件挂载好。
【未解决】 为什么要用 Jenkins 执行自动化测试案例?
我对 Jenkins 构建的理解是持续集成,持续交付。我觉得不应该用来做自动化测试,因为自动化测试的项目不需要打包。即使在 Jenkins 构建项目的时候,会执行测试用例也只是因为这是 maven 项目的特性,在执行 mvn install 的时候,会自动执行 mvn test。正是因为 mvn test 这个命令才导致 Jenkins 去执行了我们的自动化测试。我觉得自己没有把 Jenkins 用在正途上,只是用了 Jenkins 的小功能,比如邮件提醒和可以配置的执行频率。
有了 Jenkins,可以不需要通过命令行手动去执行 mvn test 命令,可以对所有用例的执行结果和输出的日志有很好的展示。希望过几天再回头看的时候,会认为自己现在的想法是错误的。