15

我正在研究为我的团队正在从事的项目(嵌入式 Java)创建“项目模板”的可能性。我们想让新开发人员不要搞砸创建新项目变得微不足道。我们在团队中使用的所有工具都应该是公关的

基本思想是应该有一个命令来设置项目和 IDE 以提供以下内容:

  • 创建一个新的 Java 项目,包括 Eclipse 项目文件。
  • 创建一个构建脚本(需要在 IDE 之外工作)。
  • 在构建脚本中包含部署选项。
  • 设置一个 git 项目。
  • 设置 PMD 以使用集成在 IDE 中的一组已配置规则运行。
  • 设置 Checkstyle 以使用集成在 IDE 中的一组配置规则运行。
  • 配置代码模板 (Eclipse) 以匹配我们的团队编码指南(Javadoc,...)
  • 配置 Eclipse 代码格式化程序。
  • 该命令的配置应该可以轻松升级。

到目前为止,我看到了两种方法:

  • Maven 2 Archetype:我基本上不喜欢 maven,因为我经常和它打架。我不确定尝试使该工具执行我想要它的工作的开销是否证明了努力的合理性。另一方面,这似乎正是原型应该做的。你有什么经验可以自定义 eclipse:eclipse 部分吗?我想eclipse配置是最复杂的一步。
  • Eclipse Nature:我可以创建一个项目性质。据我了解,如果我选择提供诸如右键单击 -> 新建 -> 我的 Java 项目类型之类的组件,则将显示 Eclipse 生态系统。您知道我可以自定义生成的 Eclipse 项目到什么程度吗?
  • Shell 脚本:我可以创建一个包含所有配置的空项目,在相关的纯文本文件中引入一些特殊标记(例如,然后编写一个 shellscript,从属性文件中读取这些选项的值,复制项目模板并替换价值。)。虽然它可能有点脆弱,但它似乎是一种简单快捷的方法。

给你更多的背景信息:没关系,如果结果将我们锁定在 Eclipse 中。虽然构建应该在没有 Eclipse 的情况下运行(对于我们的 CI),但团队使用 eclipse,我们不太可能切换。此外,所有开发人员或多或少都运行相同的硬件+软件 (Linux)。我们不在企业 Java 应用领域工作,所以我们真的不需要所有来自 maven 的花哨的依赖管理东西。事实上,我们的构建过程是如此特殊,以至于调用 make 或 ant 脚本可能要容易得多。

所以问题是:

  1. 你有这种东西的经验吗?
  2. 您对 Eclipse Nature 方式或 Maven 有意见吗?
  3. 您知道其他提供此类设置的工具吗?

非常感谢您的意见。

干杯,瓦伦丁

PS:人们似乎对他们的构建工具很虔诚。请注意,我不想在这里为或反对 maven 发起一场激烈的战争。我确信 maven 可以是一个很棒的工具,但我认为在我们的上下文中,我们只需要它的 5% 的功能,而根据我的经验,剩下的 95% 可能会妨碍你。

4

3 回答 3

7

您也可以创建自己的 PDE 工具项目并扩展 PDE 项目模板。

IBM DelevoperWorks 网络上有一篇很棒的文章,它很好地介绍了使用 Eclipse 插件开发环境构建模板

您还可以阅读有关以下 PDE 扩展点的 Eclipse 文档:

于 2010-01-19T08:51:30.407 回答
3

无论你做什么,看在上帝的份上,甚至不要考虑为此使用 Maven VIRUS。例外:如果你讨厌自己,并且喜欢给自己和他人造成不必要的痛苦,因为你从中获得了某种病态的快乐——那么,你应该使用 Maven。如果您还喜欢在工作时内部流血,请加入常春藤。

Eclipse 生成是一个好主意(对于最终用户来说可能是理想的),但实际上为了防止它变成如此大的项目,只需使用简单的解决方案:创建一个模板并使用一些简单的自定义方法。如果真的需要,只需使用查找/替换或简单的 Python 脚本。想出一个完整、可靠、可重复使用的模板(本身就是一个项目)已经够难的了。在您更好地了解这是多少工作之后,让 Eclipse 插件或其他更自动化的版本稍后出现。

查找/替换或脚本方法不是“脆弱的”,因为您的模板将很小并且由单个作者编写,而不是一些谁知道其中内容的大型生产应用程序。更复杂的解决方案往往会变得脆弱,而不是简单的解决方案。

我认为这是一个绝妙的主意,所以不要让任何人告诉你,我也创建了这样的模板。

于 2010-07-19T01:51:29.177 回答
0

看看Gradle,它支持 Ivy(依赖管理)的好东西,Maven 也像 Archetypes。

一个快速的问题......你需要多久创建一次新项目?定义您将使用哪个构建系统真的那么麻烦吗?

话虽这么说,我真的很喜欢有一个标准的项目结构,在尝试决定一些甚至不应该考虑的愚蠢事情时节省大量时间......

于 2010-01-19T09:40:47.077 回答