热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用Jenkins构建依赖项目

假设我有3个ANT项目,每个项目的build.xml脚本都位于顶级文件夹中proj1file1.javaproj2file2.javaproj3file3.java我将Jenkin

假设我有3个ANT项目,每个项目的build.xml脚本都位于顶级文件夹中

proj1
file1.java
proj2
file2.java
proj3
file3.java

我将Jenkins配置为构建这3个项目,并构建它们并将输出存储在三个单独的文件夹中.

/output/proj1/2012-02-28_20-11-06/proj1/distribution/proj1.jar
/output/proj2/2012-02-28_20-11-08/proj2/distribution/proj2.jar
/output/proj3/2012-02-28_20-11-09/proj3/distribution/proj3.jar

ANT脚本是将jar文件放在分发文件夹中的脚本.我想在另一个生成war文件的项目中使用这些jar文件.

每个项目中生成的jar文件用于构建WAR文件.有没有办法我可以配置Jenkins来构建proj1,proj2,proj3然后将jar文件复制到一个特定的位置,该位置将包含另一个ANT项目,该项目在运行时会产生一个war文件?或者这是否必须用ANT编码?

此外,是否可以在运行ANT构建脚本之前配置jenkins进行多次检出.我正在使用CVS,并希望在运行构建之前使用不同的标记执行3次检出.

编辑

我在睡觉前昨晚发布了这个问题.今天再读一遍,我认为还不够清楚,所以我会再次澄清这个要求.我有4个项目使用ANT作为构建机制,并且都存储在CVS存储库中.构建的所有4个项目形成一个部署在Tomcat应用程序服务器上的WAR文件.

proj1
- file1.java
- file2.java
proj2
- file3.java
- file4.java
proj3
- file3.java
- file4.java
proj4
- jsp
- home.jsp
- css
- home.css
- WEB-INF
- lib
- classes
- web.xml

每个项目(proj4除外)都有一个ANT构建文件,用于构建项目并生成一个JAR文件,该文件存储在项目根文件夹的“distribution”文件夹中.例如,在构建proj1之后,它将如下所示

proj1
- file1.java
- file2.java
- distribution
- classes
- file1.class
- file2.class
- proj1.jar

Proj4依赖于proj1,proj2和proj3,因为它首先需要在构建war文件之前将所有jar文件复制到其工作区. project4的ANT构建文件从proj1,2和3复制JAR文件并构建WAR文件.生成的WAR文件包含以下结构

proj4
- jsp
- home.jsp
- css
- home.css
- WEB-INF
- lib
- proj1.jar
- proj2.jar
- proj3.jar
- classes
- web.xml

现在自动执行上述操作我需要以某种方式配置Jenkins和ANT来执行以下操作(按所示顺序)

- Checkout proj1 from CVS using RELEASE1.1 tag
- Build proj1
- Checkout proj2 from CVS using RELEASE1.2 tag
- Build proj2
- Checkout proj3 from CVS using RELEASE1.1 tag
- Build proj3
- Checkout proj4 from CVS using RELEASE1.1 tag
- Copy the proj1.jar, proj2.jar, proj3.jar from the previous 3 builds and copy them to the proj4 WEB-INF/lib folder.
- Build proj4
- Deploy the WAR file.

昨天我和Jenkins一起玩,并设法配置它来构建每个项目,但每个jar文件最终都在一个不相关的文件夹中.我如何配置Jenkins来构建项目,如上所述?

环境具有以下属性

Build tool - ANT
OS - Solaris

Maven可能会使用它,但目前还没有计划引入Maven.如果有一个简单的Maven之类的构建工具,我可以使用它来存储我需要的库,不需要外部访问,请告诉我.

提前致谢.

解决方法:

我不明白你的要求是什么,但让我们试一试:

使用Parameterized Trigger Plugin作为构建步骤,从单个作业(称为TriggerJob)启动三个作业.给他们TriggerJob的BUILD_ID作为参数,他们将用它来存储结果(而不是使用他们自己的BUILD_ID;如果你仍然需要单独构建它们 – 而不是从TriggerJob触发 – 你可以为参数指定一些默认值,并使用Conditional BuildStep Plugin检查它,当它具有默认值时 – 使用自己的BUILD_ID,否则使用传入的参数).

让TriggerJob等待三个作业完成,然后收集你的jar(TriggerJob知道它们在哪里),然后继续第四个作业,它将调用你的最后一个ANT将它们归档在一起(或者将它变成TriggerJob中的ANT构建步骤,什么适合更好).

以防万一以下观察结果可能对您有用:每个ANT构建步骤都可以使用自己的构建文件(它位于ADVANCED按钮下).您可以使用环境变量指定其路径.

多次检查:我不熟悉CVS插件,但是使用Subversion插件我更喜欢手工操作:我有触发作业通过Subversion插件轮询SVN并将修订号作为参数传递给实际工作的作业.然后,这些作业使用显式SVN调用(从shell构建步骤)更新为作为参数传递的修订.也许你可以用CVS插件做同样的事情.


推荐阅读
  • 开发笔记:spring boot项目打成war包部署到服务器的步骤与注意事项
    本文介绍了将spring boot项目打成war包并部署到服务器的步骤与注意事项。通过本文的学习,读者可以了解到如何将spring boot项目打包成war包,并成功地部署到服务器上。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • 本文介绍了在sqoop1.4.*版本中,如何实现自定义分隔符的方法及步骤。通过修改sqoop生成的java文件,并重新编译,可以满足实际开发中对分隔符的需求。具体步骤包括修改java文件中的一行代码,重新编译所需的hadoop包等。详细步骤和编译方法在本文中都有详细说明。 ... [详细]
  • 本文讨论了在shiro java配置中加入Shiro listener后启动失败的问题。作者引入了一系列jar包,并在web.xml中配置了相关内容,但启动后却无法正常运行。文章提供了具体引入的jar包和web.xml的配置内容,并指出可能的错误原因。该问题可能与jar包版本不兼容、web.xml配置错误等有关。 ... [详细]
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
  • Jboss的EJB部署描述符standardjaws.xml配置步骤详解
    本文详细介绍了Jboss的EJB部署描述符standardjaws.xml的配置步骤,包括映射CMP实体EJB、数据源连接池的获取以及数据库配置等内容。 ... [详细]
  • 使用freemaker生成Java代码的步骤及示例代码
    本文介绍了使用freemaker这个jar包生成Java代码的步骤,通过提前编辑好的模板,可以避免写重复代码。首先需要在springboot的pom.xml文件中加入freemaker的依赖包。然后编写模板,定义要生成的Java类的属性和方法。最后编写生成代码的类,通过加载模板文件和数据模型,生成Java代码文件。本文提供了示例代码,并展示了文件目录结构。 ... [详细]
  • Tomcat安装与配置教程及常见问题解决方法
    本文介绍了Tomcat的安装与配置教程,包括jdk版本的选择、域名解析、war文件的部署和访问、常见问题的解决方法等。其中涉及到的问题包括403问题、数据库连接问题、1130错误、2003错误、Java Runtime版本不兼容问题以及502错误等。最后还提到了项目的前后端连接代码的配置。通过本文的指导,读者可以顺利完成Tomcat的安装与配置,并解决常见的问题。 ... [详细]
  • 解决java.lang.IllegalStateException: ApplicationEventMulticaster not initialized错误的方法和原因
    本文介绍了解决java.lang.IllegalStateException: ApplicationEventMulticaster not initialized错误的方法和原因。其中包括修改包名、解决service name重复、处理jar包冲突和添加maven依赖等解决方案。同时推荐了一个人工智能学习网站,该网站内容通俗易懂,风趣幽默,值得一看。 ... [详细]
  • 本文讨论了如何使用Web.Config进行自定义配置节的配置转换。作者提到,他将msbuild设置为详细模式,但转换却忽略了带有替换转换的自定义部分的存在。 ... [详细]
author-avatar
罂粟花wd2010
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有