将$ CATALINA_HOME传递给Jenkins的Maven构建任务

时间:2013-07-12 16:26:50

标签: tomcat configuration jenkins maven-3

我目前正在建立一个持续集成系统,它运行良好。这就是它目前的样子

Tomcat7 with  
|- Sonar  
|- Jenkins (latest LTS version)
|  |- Maven Build  
|     | - mvn clean install
|     | - mvn site-deploy
|     | - sonar analysis
|- Site for the Maven Build

这使得一个有效的构建包括通过tomcat提供mvn site的结果。

但是,将站点报告推送到tomcat中的正确位置只能 ,因为我在pom.xml中硬编码file://path/to/tomcat/webapps/site/,如

<distributionManagement>
    <site>
        <id>local</id>
        <name>local</name>
        <url>file://path/to/tomcat/webapps/site/</url>
    </site>
</distributionManagement>

问题:
这将maven配置严重耦合到CI服务器上tomcat的位置,我认为应该绕过它。

问题1:
我可以以某种方式将$ CATALINA_HOME传递给jenkins发起的相应Maven任务吗?

问题2:
是否有更好的方式来提供网站报告,最好不安装单独的网络服务器?

1 个答案:

答案 0 :(得分:0)

我终于找到了解决这个问题的方法。

问题1: 我使用jenkins中maven作业可用的设置玩了一下,发现确实可以通过${CATALINA_HOME}然后由Jenkins扩展。

但是,这个系统是安装在Windows机器上的,${CATALINA_HOME}路径中的反斜杠似乎在某处被吞下,因此无法完成这项任务。

<强>解决方案:

  • 在tomcat的sentenv.bat中我添加了:

    set SITE=C:/Program Files/apache-tomcat-7.0.42/webapps/site  
    
  • 在pom中
  • 的相应部分是:

    <distributionManagement>
      <site>
        <id>local</id>  
        <name>local</name>  
        <url>file://${local.site.dir}/RIAS/</url>  
      </site>  
    </distributionManagement>
    
  • jenkins的工作然后将两者结合起来: enter image description here

然后将这些“属性”传递给maven -Dlocal.site.dir=<resolved expression>

<强>结论:
在Linux系统上设置额外的$ {SITE}似乎是多余的。一旦吞咽反斜杠消失,对于Windows系统也是如此。不幸的是,我不知道吞咽发生在哪个地方。

此外,这将CI系统的配置与pom中的规范分离。

欢迎任何进一步的讨论和评论。