9

命名 ant 目标的最佳实践是什么?

例如,您希望目标“测试”运行什么?所有单元测试?所有功能测试?两个都?

用于运行不同类型测试(单元/功能/全部)的标准名称是什么?在 J2SE 中部署软件的目标名称是否有标准?在 J2EE 中?

我的项目将 ant 用于带有 junit、Swing 应用程序和 J2EE 应用程序的 java 项目。

4

7 回答 7

15

请参阅此页面上的“命名约定”部分: Ant 样式的元素

以下目标对于许多构建都是通用的。始终避免更改众所周知的目标名称的行为。您不需要在单个项目中实现所有这些。

all               Build and test everything; create a distribution, optionally install. 
clean             Delete all generated files and directories. 
deploy            Deploy the code, usually to a remote server. 
dist              Produce the distributables. 
distclean         Clean up the distribution files only. 
docs              Generate all documentation. 
init              Initialize the build: create directories, call <tstamp> and other common actions. 
install           Perform a local installation. 
javadocs          Generate the Javadoc pages. 
printerdocs       Generate printable documents. 
test              Run the unit tests. 
uninstall         Remove a local installation. 

此页面还提供了其他良好的指导方针。

于 2011-09-23T09:48:15.057 回答
6

对于我的 java 项目,我使用在maven 默认生命周期中定义的名称作为基础。对于其他项目,我也使用了GNU autoconf 标准目标

于 2009-05-09T17:06:10.980 回答
3

有一个标准被合理地广泛使用。任何以 - 字符开头的目标名称都不能从命令行调用,因此肯定不能直接执行。有时,这被称为隐藏目标

于 2008-12-05T09:55:47.103 回答
2

只要它们在您的整个项目中是可以理解和一致的,您如何命名它们就取决于您了。简单、简短的动词通常是常态,目标应该在逻辑上分解。

您可以走 Matt B 建议的路线,按类型命名您的测试目标:

  • 测试单元
  • 测试功能
  • 测试所有

或者您可以按工具命名,例如,如果您有 Junit、Selenium 和 Webtest 功能测试:

  • 测试-junit
  • 测试硒
  • 测试网络测试
  • 测试所有

如果您对要向构建项目的任何人公开的目标使用描述属性,用户可以执行ant -p列出可用目标并选择他们想要的目标。这里有用的描述对于用户来说可能比目标的实际名称更重要和更有价值。

蚂蚁手册

可选的描述属性可用于提供此目标的单行描述,由 -projecthelp 命令行选项打印。没有这种描述的目标被认为是内部的并且不会被列出,除非使用了 -verbose 或 -debug 选项。

于 2008-12-04T22:00:05.037 回答
2

我们在使用依赖于其他单个任务的简短目标名称方面取得了良好的经验。AFAIK 通用标准集是

  • 在里面
  • 干净的
  • 编译
  • 距离
  • 测试
  • 报告

(虽然找不到链接)

这对我们来说非常有效。

当我们必须区分测试类型时,我们将它们命名为“test.data”和“test.nondata”以分隔测试类型,它们中的每一个都被“测试”任务视为依赖。也许您应该像另一个用户建议的那样使用“java方法命名约定”,但恕我直言,这并不重要。

如果您在本地机器上手动运行 ant 脚本(我这样做是为了测试我是否破坏了构建脚本),如果您只需键入

ant dist
ant test report

代替

ant compile create.distribution
ant test.data test.nondata report.junit.generate report .....
于 2008-12-05T05:13:42.743 回答
1

我认为这完全是个人喜好,但我会使用

  • test- 用于单元测试
  • test-integration- 用于集成测试
  • dbtest- 用于数据库测试(如果它们包含在上述项目中)
  • test-all运行以上所有

此外,我不知道使用test或复数形式tests,我可能在不同的项目中都做过。

于 2008-12-04T21:32:47.850 回答
1

ant 目标的命名约定应该与 Java 方法的命名约定非常相似:即,简单且描述目标的功能。

以下是Sun 方法命名标准的摘录:

命名方法

尽管方法名可以是任何合法标识符,但代码约定限制了方法名。按照惯例,方法名称应该是小写动词或以小写动词开头的多词名称,后跟形容词、名词等。在多词名称中,第二个和后续单词的首字母应该大写。这里有些例子:

run
runFast
getBackground
getFinalData
compareTo
setX
isEmpty

可能最大的不同是 ant 目标的样式,它应该是所有小写字母,单词之间用破折号分隔。

例如,以下目标对我来说似乎很合适:

  • run-all-tests
  • build
  • clean
  • test-and-release
  • deploy
  • run-code-coverage-metrics

最后,尽量使用与命名方法时相同的良好判断。如果你的目标清晰、描述性强且易于理解,那么你的状态就很好。

有关该主题的更多详细信息,请查看Ant wiki 上的The Elements of Ant Style 。

于 2008-12-04T22:11:28.443 回答