Tag: build process

maven – 当unit testing耗时太长时失败

我在我的项目中有很多unit testing,用JUnit和TestNG编写。 构建过程基于带有surefire插件的maven。 当至少一个unit testing花费太多秒时,maven是否有任何方法/插件可以使构建失败? 我知道有一些插件可以在TeamCity,Jenkins中构建失败,但这是“太过分了”。 在我的项目中,我希望只进行快速测试,以使unit testing过程有效。 我可以改进我的旧测试,但我需要保护未来的承诺

如何在Ant中添加与java -D等效的系统属性

我需要设置java -Djava.library.path = / some / path ,我想在运行我的ant脚本,构建我的jar时这样做。 我想我必须使用 但它不起作用。 我不能使语法工作。 我用Google搜索和找到的唯一东西就是sysproperty 但这对我没有任何意义。 我不确定这是否相关,但我使用ant来创建一个耳朵并在JBoss中部署这个耳朵。

在ant构建期间修改代码的最佳实践

承认,这听起来并不是最佳做法,但让我解释一下。 在构建期间,我们需要将构建号和系统版本粘贴到一个类中,该类的唯一目的是包含这些值并使它们可访问。 我们的第一个想法是使用系统属性,但由于部署环境的波动性(另一种说法是“系统管理员正在做奇怪的邪恶的令人毛骨悚然的东西”),我们希望对它们进行硬编码。 基本上我看到了在ant中实现它的4种可能性: 在类中的标记上使用 这种方法的问题是文件被更改,所以你必须在编译后用替换令牌… sooo丑陋,我不想用正则表达式来触摸源代码。 加上时间依赖。 复制文件,复制副本,编译副本,删除副本 一个人必须要记住序列 – 必须先编译原始类才能被副本覆盖。 时间依赖性也很难看。 复制文件,替换原件上的令牌,编译,用副本替换染色的原件 除非嵌入在编译目标中,否则相同的时间依赖性问 这也很难看,因为我们所有的构建文件都使用相同的导入编译目标。 在构建脚本中从头开始创建文件/将文件存储在源路径之外 由于没有时间依赖性,因此对前三个进行了改进,但编译器/ IDE非常不满意,因为它忽略了类。 红色标记令人不安地丑陋。 您对替代方案有何看法? 对此有什么最佳做法吗? 我当然希望我错过了一个完美的方法。 谢谢 编辑我们最终使用清单将构建号和系统版本存储在Implementation-Version属性中,取消了MyClass.class.getPackage().getImplementationVersion() 。 我发现这个解决方案是这个post的答案之一,由andersoj发表在评论中

maven-native-plugin是否广泛用于使用maven构建C ++项目?

自从我专业地进行C ++开发以来,我已经有一段时间了,我想了解C ++开发在许多领域的当前状态。 我最近的大部分工作都是Java,大量使用Maven。 当我上次进行C ++开发工作时, make一些变体被广泛接受为构建C ++项目的方式(我们也使用make在我们的混合Java和C ++项目中构建Java代码,尽管我相信ant是开始成为主流)。 我喜欢使用Maven进行构建。 我的问题不是讨论使用Maven的相对优点,而是要确定Native Maven插件用于构建C ++项目的采用程度以及人们对此的体验。 或者,是否有一个新的通用工具链用于C ++构建,具有很大的动力?

如何摆脱maven快照版本

我一直在使用maven一段时间了。 但我从未学会如何摆脱快照版本。 请分享一些关于如何发布工件的文章。 即如何将我的0.0.1-SNAPSHOT版本发布到(例如)1.0.0

我如何向Maven索取默认存储库列表?

我可以使用什么命令向Maven询问它搜索其依赖项的默认存储库列表? 如果不存在这样的命令,我还可以在哪里找到这个默认列表?

有没有办法将长时间运行(例如压力测试)分开,以便它们在Maven 2中默认不运行?

我们一直有这样的需求,我无法弄清楚如何使用库存Maven 2工具和文档解决。 我们的一些开发人员有一些非常长时间运行的JUnit测试(通常是压力测试),在任何情况下都不应该作为构建过程/每晚构建的常规部分运行。 当然,我们可以使用surefire插件的排除机制,只是从构建中删除它们,但理想情况下我们喜欢允许开发人员通过Maven 2随意运行它们的东西。

什么是构建自动化软件(例如,Ant)?

我看到很多ant的参考,但我没有完全明白它的意义呢? 从我听说它应该编译你的项目,但我不能通过单击运行 – >在eclipse中运行来做到这一点? 编辑:我想我应该改述我的问题。 我已经知道ant是一个“构建自动化软件”,我的问题是,构建自动化究竟是什么? 我认为你应该测试你的应用程序,当它运行时你点击eclipse中的’build’按钮或通过命令行java,它会生成一个.jar文件? 那么为什么你需要“自动化”这个过程呢?

你在复杂的构建过程中使用了什么?

我正在尝试改进我们的构建过程,这是一个巨大的Ant build.xml,它调用其他ant构建文件并执行几个Java类来执行更复杂的逻辑,这些逻辑在Ant中是不可能的/可怕的。 背景: Java和Ant的经验,一些Groovy Windows平台 目标: 作为命令行cron和servlet发布时的组合运行 尽可能简化,最少的语言和技术之间的弹跳 我需要像Java这样的语言提供更高级别的逻辑能力,而Ant非常简单,我们使用过滤来覆盖不同客户端的默认属性文件。 大多数情况下,我想知道人们使用的是Ant / Java以外的东西。

常春藤怎么样:发表作品?

我完全不知道ant任务常春藤:发布应该如何工作。 我希望我做正常的构建,创建一堆jar文件,然后我会将这些jar推送到(本地)存储库。 如何指定从哪里检索构建的jar,以及它们将如何最终存储在存储库中? 更新: Publish Local”> 这实际上有效,我之前没有包含检索。 但我仍然有一些问题,假设我想发布3个jar子,openscada-utils.jar,openscada-utils-sources.jar和openscada-utils-javadocs.jar作为openscada-utils-0.9.2.jar,openscada-utils -0.9.2-sources.jar和openscada-utils-0.9.2-javadocs.jar 我不完全清楚,实际的名字如何组合,以及我可以指定他们应该得到的名称。 (使用上面的片段,jar总是只调用utils.jar)。 更新1: 我让它工作(有点),但它仍然感觉不对。 不知何故,所有教程都关注第三方项目的依赖关系,但对我来说同样重要的一点是处理项目特定的依赖关系。 我有一堆子项目,它们以各种方式相互依赖。 考虑常春藤:发布我不清楚如何开始。 我该如何处理第一个版本? 我有一个共同的版本号用于所有子项目,以表明它们属于一起(假设为0.9)。 因此第一次修订应该是0.9.0,但到目前为止,我的项目中没有任何内容存在于我的存储库中。 如何让Ivy分配此修订号。 在开发过程中,我想再次发布构建的文件,而不更改到目前为止的版本号。 如果我完成了我的工作,我想将其推送到共享存储库(并将修订版号从0.9.0增加到0.9.1),建议的方法是什么? 对于实际的版本,我想制作具有依赖关系的发行版,但不知道,我想我可以使用不同的配置。 我怎样才能利用这个优势呢?