- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
假设我有 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 编码?
此外,是否可以将 jenkins 配置为在运行 ANT 构建脚本之前进行多次 checkout 。我正在使用 CVS,并希望在运行构建之前使用不同的标签分别进行 3 次检查。
我昨晚 sleep 前发布了这个问题。今天又看了一遍,觉得不够清楚,所以我会再次澄清要求。我有 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 文件,该文件存储在项目根文件夹的“分发”文件夹中。例如,在构建 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 按钮下)。您可以使用环境变量来指定其路径。
多次 checkout :我不熟悉 CVS 插件,但使用 Subversion 插件我更喜欢手动操作:我有触发作业,通过 Subversion 插件轮询 SVN,并将修订号作为参数传递给执行实际工作的作业。这些作业然后使用显式 SVN 调用(从 shell 构建步骤)来更新作为参数传递的修订。也许您可以使用 CVS 插件做同样的事情。
关于java - 使用 Jenkins 构建依赖项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9489405/
我正在使用 NetBeans 开发 Java 中的 WebService,并使用 gradle 作为依赖管理。 我找到了this article关于使用 gradle 开发 Web 项目。它使用 Gr
我正在将旧项目从 ant 迁移到 gradle(以使用其依赖项管理和构建功能),并且在生成 时遇到问题>eclipse 项目。今天的大问题是因为该项目有一些子项目被拆分成 war 和 jar 包部署到
我已经为这个错误苦苦挣扎了很长时间。如果有帮助的话,我会提供一些问题的快照。请指导我该怎么办????在我看来,它看起来一团糟。 *** glibc detected *** /home/shivam/
我在 Ubuntu 12.10 上运行 NetBeans 7.3。我正在学习 Java Web 开发类(class),因此我有一个名为 jsage8 的项目,其中包含我为该类(class)所做的工作。
我想知道 Codeplex、GitHub 等中是否有任何突出的项目是 C# 和 ASP.NET,甚至只是 C# API 与功能测试 (NUnit) 和模拟(RhinoMocks、NMock 等)。 重
我创建了一个 Maven 项目,包装类型为“jar”,名为“Y”我已经完成了“Maven 安装”,并且可以在我的本地存储库中找到它.. 然后,我创建了另一个项目,包装类型为“war”,称为“X”。在这
我一直在关注the instructions用于将 facebook SDK 集成到我的应用程序中。除了“helloFacebookSample”之外,我已经成功地编译并运行了所有给定的示例应用程序。
我想知道,为什么我们(Java 社区)需要 Apache Harmony 项目,而已经有了 OpenJDK 项目。两者不是都是在开源许可下发布的吗? 最佳答案 事实恰恰相反。 Harmony 的成立是
我正在尝试使用 Jsoup HTML Parser 从网站获取缩略图 URL我需要提取所有以 60x60.jpg(或 png)结尾的 URL(所有缩略图 URL 都以此 URL 结尾) 问题是我让它在
我无法构建 gradle 项目,即使我编辑 gradle 属性,我也会收到以下错误: Error:(22, 1) A problem occurred evaluating root project
我有这个代码: var NToDel:NSArray = [] var addInNToDelArray = "Test1 \ Test2" 如何在 NToDel:NSArray 中添加 addInN
如何在单击显示更多(按钮)后将主题列表限制为 5 个(项目)。 还有 3(项目),依此类推到列表末尾,然后它会显示显示更少(按钮)。 例如:在 Udemy 过滤器选项中,当您点击查看更多按钮时,它仅显
如何将现有的 Flutter 项目导入为 gradle 项目? “导入项目”向导要求 Gradle 主路径。 我有 gradle,安装在我的系统中。但是这里需要设置什么(哪条路径)。 这是我正在尝试的
我有一个关于 Bitbucket 的项目。只有源被提交。为了将项目检索到新机器上,我在 IntelliJ 中使用了 Version Control > Checkout from Ve
所以,我想更改我公司的一个项目,以使用一些与 IDE 无关的设置。我在使用 Tomcat 设置 Java 应用程序方面有非常少的经验(我几乎不记得它是如何工作的)。 因此,为了帮助制作独立于 IDE
我有 2 个独立的项目,一个在 Cocos2dx v3.6 中,一个在 Swift 中。我想从 Swift 项目开始游戏。我该怎么做? 我已经将整个 cocos2dx 项目复制到我的 Swift 项目
Cordova 绝对是新手。这些是我完成的步骤: checkout 现有项目 运行cordova build ios 以上生成此构建错误: (node:10242) UnhandledPromiseR
我正在使用 JQuery 隐藏/显示 li。我的要求是,当我点击任何 li 时,它应该显示但隐藏所有其他 li 项目。当我将鼠标悬停在文本上时 'show all list item but don
我想将我所有的java 项目(223 个项目)迁移到gradle 项目。我正在使用由 SpringSource STS 团队开发的 Gradle Eclipse 插件。 目前,我所有的 java 项目
我下载this Eclipse Luna ,对于 Java EE 开发人员,如描述中所见,它支持 Web 应用程序。我找不到 file -> new -> other -> web projects
我是一名优秀的程序员,十分优秀!