使用Maven创建Java EE项目


13

我已经使用Eclipse开发Java EE Web应用程序大约一年了。我的雇主不使用Maven,但是我读的越多,我就越确信Maven + Hudson将对我们大有裨益。但是,首先,我必须在业余时间适应这些技术,以便创建概念验证。

现在,我仍然是Maven新手。有使用Maven创建Java EE Web应用程序的最佳实践吗?例如,我可以创建一个具有基本原型的项目,然后通过将依赖项放入Servlet容器,EJB,EclipseLink等的POM中来添加所有必需的JAR。方法。非常感谢您就此主题提供的任何指导。

Answers:


10

直到以后不要打扰原型

有关您需要了解的有关Maven的所有信息,请阅读其网站上一些书籍。但是,这对于您要实现的目标有些过高。

首先,请按照Web应用程序的标准Maven结构对Web应用程序进行布局,如下所示。(您不需要Maven原型,它只是一堆标准文件夹,您可以在2分钟内完成创建)。

  • src/main/java -包含您的生产Java代码
  • src/main/resources -包含您的生产类路径资源(例如Spring上下文)
  • src/main/webapp -(包含WEB-INF / web.xml但没有lib文件夹)
  • src/test/java -包含您的测试Java代码
  • src/test/resources -包含您的测试资源(例如,用于Web服务测试的XML提要示例)

基本插件

下一步是选择一堆插件。显然,通常的怀疑者是那些支持清理,编译和资源的人(作为Maven的一部分出现,但您可以对其进行配置)。然后,您将拥有surefire单元测试器和WAR插件。这足以创建一个非常基本的Web应用程序。

更高级的插件

下一步是介绍Findbugs和PMD插件,这将使您的代码更完整,并报告各种潜在问题。您可能需要JXR来交叉引用源代码,使用标记列表来跟踪TODO和REFACTOR标记,等等。首先...

...将Jetty插件用于Web应用程序

使用Jetty插件在IDE中运行WAR文件,以便于调试。它既快速又小巧,可以快速完成工作。将Jetty作为您的Maven构建的一部分,使您的项目能够在任何计算机上进行测试,而无需配置一些复杂的Servers面板的IDE。它还允许您声明对其他WAR文件的依赖关系,这又意味着您可以使用单个命令“ mvn clean jetty:run”生成包含多个Web应用程序的完整工作环境。这在任何地方都可以使用,您甚至可以提供测试JNDI配置,以便可以从外部配置Spring注入的数据源。如果您将此Jetty方法与标准的演示HTML页面结合使用(src/test/resources/demo.html),您将节省大量开发人员的时间,以尝试获得可运行的本地环境。一个命令,您就完成了。简单。

配置您的IDE

使用Maven可以很容易,因为所有大公司都支持它:Eclipse,Netbeans,当然还有我个人最喜欢的Intellij。只要将您的IDE指向pom.xml,它就会为您列出所有列出的依赖项。不再为之烦恼WEB-INF/lib。在Eclipse中,通常使用File | File。导入... | Maven项目| pom.xml。

与Hudson集成

首先安装Hudson(这只是一个Web应用程序),然后定位您的版本控制系统,以使其签出适当的版本。最后一步是配置它,以便它使用Maven进行构建。显然,必须将Maven安装在您的构建计算机上(假设它与开发计算机不同)。

哈德森只做快照构建

让Hudson执行快照构建,并将发布构建留给手动过程。使用该方法将意味着开发人员可以在快照修订版(例如1.0.0-SNAPSHOT)下共享其代码,并且只有在能够通过构建时,它才可以共享到团队存储库中。通常,Hudson将执行“ MVN干净部署”,尽管包括“站点”目标也可能是您过程的一部分,因为它将为每个构建版本创建一个小型项目网站。团队中的开发人员将通过Maven依赖管理过程将更新后的快照构建自动包含到他们的项目中。

Hudson提供了大量可以支持各种指标的插件。我个人最喜欢的是随时间跟踪每个项目的通过测试次数。很高兴向管理层表明,您的单元测试数量和覆盖范围正在不断增加。

通用设置指南

将您的存储库至少分为以下结构:

  • 团队发布-您发布的所有生产工件都在这里
  • team-snapshot-您所有的快照开发工件都在这里
  • 第三方发布-您所有支持的第三方库都在这里(例如Spring,Hibernate等)

开发人员用户帐户不应能够写入团队存储库(快照或发行版)。如果有急事,这将使开发人员可以绕开Hudson,并将很快成为常态。

确保始终下载所有第三方的源代码,javadocs和SHA签名。Jarvana对于所有难以找到的类都是出色的资源库浏览器。

考虑安装诸如Nexus或Artifactory之类的存储库管理器,以更好地控制您不断增长的存储库。


2
声纳也非常出色,非常适合maven / Hudson
Kevin

1
绝对。现在,如果我正在一个团队中从事Maven项目,那么我希望本地的Findbugs / PMD能够迅速发现杀手级的问题,那么在Jenkins构建并将工件部署到Nexus或Artifactory之后,进行Sonar工作。这提供了工件的轻松位置,并为整个项目生态系统中的那些工件提供了影响分析(“在使用时”)。结合git,JIRA和Fisheye,您将获得一个很棒的开发过程。
加里·罗

1
加里(Gary),pdf链接已过期
user1787812

1

Maven提供了大量原型

mvn archetype:generate

将打印可用列表。

普通Java原型与J2EE原型之间的主要区别在于,将生成jsp和图像的目录。如果您开始一个新的J2EE项目,请考虑从一开始就使用其中之一。

随着项目的增长,您可能会添加更多的依赖项。我个人更喜欢从最小的依赖关系集合开始(例如J2EE基本原型),然后逐渐添加我需要的东西。


0

我已经从一个基本的原型开始并添加了所有的位,从而做到了这一点,并且我相当确定这不是一个很好的方法。但是我也觉得这很尴尬。除非您已经“精通秘诀”,否则很难选择一个好的原型。就我的口味而言,这有点像巫师的知识(而不是明智的发现技术信息)……


我认为这是一个好问题。希望我有一个更好的答案。
Donal Fellows

先生,非常感谢。
迈克尔

0

Maven提供了一种从称为Archetypes的模板创建项目的方法。您可以使用该命令mvn archetype:generate交互方式选择一个。您也可以直接指定一个。

mvn archetype:generate \
    -DarchetypeGroupId=org.apache.maven.archetypes \
    -DarchetypeArtifactId=maven-archetype-j2ee-simple \
    -DarchetypeVersion=1.0

全部在一线。


0

最近三个月我一直在使用Maven和Hudson。通过执行所有单元测试并生成测试报告,它可以帮助我定期检查代码库的运行状况。你可以试试看
您也可以尝试Spring Roo。它是用于创建基于Spring的J2EE项目的RAD工具。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.