Eclipse .classpath文件和build.xml文件之间有什么关系?

时间:2013-04-13 03:53:48

标签: eclipse maven ant build.xml

我使用Java / Eclipse进行开发,我从未真正使用任何传统的构建工具,如ant或maven。我通常只是依靠通过eclipse构建项目而我很少使用命令行。我真的不想花时间去了解ant / maven,但是我想知道eclipse是否真的可以通过其.classpath文件替换所有ant / maven的功能。

(请不要向我推荐一些让学习蚂蚁非常容易的教程)。

2 个答案:

答案 0 :(得分:3)

  • Eclipse知道如何基于.project.classpath文件构建项目。

  • build.xml是Ant使用的构建规则的默认文件名,因此当您运行不带参数的ant时,它将使用此文件来确定要执行的操作。

  • pom.xml是描述Maven项目的默认文件名,因此当您运行mvn compile时,它将使用此文件来确定如何构建项目。

  • Eclipse可以基于Ant构建文件或POM文件导入项目,并创建相应的.project.classpath文件。

Eclipse,Ant,Maven都是不能互相替换的不同工具。它们有一些重叠的功能,但也有一些独特的功能。

能够使用命令行构建项目是一项非常有用的技能,也是成为优秀程序员的一部分。在Programmer Competency Matrix中,能够使用命令行构建软件被认为是Level 1(超出0级,1,2,3级),如果你不能这样做,那就不太好了。 http://www.indiangeek.net/programmer-competency-matrix/

我强烈建议学习Maven。

答案 1 :(得分:1)

如果你的应用程序在Eclipse之外几乎没有存在,那么也许你应该继续以这种方式使用Eclipse。但Eclipse是一个开发人员工具(开发人员和编写代码的人)。除了最琐碎的项目之外,任何其他项目都必须处理开发人员以外的角色。和应用程序经历整个生命周期。事实上,无论是从项目管理的角度来看,还是从可交付成果的角度来看,存在不同的生命周期轴,例如编码,编译,组装依赖,打包,部署或从其他角度来看。

当您查看遍历阶段的可交付成果时,可以从Eclipse中(手动)完成许多这些步骤。所以,再次,如果这对你有用,赞美。然而,它错过了自动化,对于某些步骤(阶段),Eclipse不是正确的工具。例如:持续集成不是Eclipse的基础。 CI服务器可能想要检查您的源并从头开始构建东西。它需要找到依赖关系等,可以在Eclipse的.classpath文件的基础上这样做,但这会引入对Eclipse的依赖。现在,我已经看到大公司正是这样做的,但它有点笨重,因为这不再是Eclipse的意思。

相反,有一些工具可以很好地处理整个*生命周期。

* 请注意,“整体”是一个非常主观的问题。从开发人员的角度来看,生命周期可能分阶段很好地分开,但是大型组织中的其他人可能会发现,在生命周期阶段的任何特定细分中,他们的职责都不足。

Maven或Gradle就是这样的工具。将它们视为具有多个站的装配线。开发人员使用Eclipse在其中一个工作站,但在装配线下方不断滚动。 CI是另一个站,使用Bamboo,Hudson,Jenkins或类似的,但仍然在工作的装配线下面。在Eclipse中,m2e插件是Eclipse和装配线Maven之间的连接器。

另一种处理问题的方法是使用脚本来替换您在Eclipse中执行的手动步骤,将它们连接在一起,或者对它们进行补充。很明显可以使用许多语言,但在构建工具领域中,Ant非常受欢迎,因为它的功能与此目的完全一致。

如果您是一家专业软件工厂(可能已经是单个开发人员项目的情况),您需要一条装配线。 Maven或Gradle为您提供了一个开箱即用的功能。如果你想在上游游泳,你可以使用Ant或其他东西构建自己的游戏。如果你真的没有这方面的要求,那就继续在Eclipse中手动做。

即使用XML定义,Ant也很自然地成为开发人员,因为它拥有许多传统的顺序编程语言。 Maven和Gradle有不同的方法,因此学习曲线更陡峭。但它绝对值得。如果您按照自己的方式进行操作变得轻而易举,并且您不必编写要添加到装配线的所有其他内容。这个手工制作的脚本总是很小,但它们永远不会那样,是吗? :)

除此之外,我还想提一下,Maven也非常善于解决依赖关系问题。这就是它最为人所知的,但这不是这个问题的内容,事实上它只是它能为你做的一小部分。