当前位置: 首页 > 面试题库 >

如何在Java项目中使用Maven?为什么?

晏正豪
2023-03-14
问题内容

我试图弄清楚Maven的用途,并且有很多文章介绍了Maven的功能和用途。但是我只是不能从生产力的角度理解Maven的实际使用。

从我在学校项目中所习惯的,就是在Eclipse中创建一个新的Java项目,编写您的代码,创建一个.war(如果基于Web),然后将代码粘贴到Tomcat的webapps文件夹中并启动服务器

所以,

  1. Maven在哪里出现?我已经使用过Ant,并且了解Ants标准化构建过程的好处。但是为什么我们需要Maven形式的高级Ant?

  2. 无论如何,我都需要使用它,那么我应该从哪里开始-基本流程,一些不错的教程?

谢谢


问题答案:

Maven用于管理构建,测试和部署过程。它可以将单元测试和集成测试分开,因此您仅在必要时运行它们并减少构建时间。

它也是一个 依赖项管理器 ,这意味着当您意识到项目需要的服务器部分apache commons-logging 1.0.4但客户端与过去的任何内容发生冲突时0.7.9,您只需在相应的pom.xml文件中添加几行,然后Maven会处理所有这些(下载,安装,并跟踪这些依赖项的不同版本)。

在执行当前任务之前,我并不相信,但是在将其用于大型企业应用程序的两年后,我绝对尊重Maven带来的好处。有很多在线资源,但是如果您要带头去做并且真的感到不舒服,我建议您买一本书-O’Reilly的书很有帮助。

忘了提到一个Eclipse插件,它使使用Eclipse
变得毫不费力:m2Eclipse。

例如pom.xml段的第二次更新以回答OP问题:

pom.xml将包含XML代码,例如:

<dependencies>
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.0.4</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

这些都是从中央Maven资料库(google“ maven
nexus”)下载的,或者您可以配置自己的其他资料库(例如用于自己的项目,或者如果没有Internet连接)。



 类似资料:
  • 问题内容: rt.jar的必要性是什么? 问题答案: rt =运行时间 它包含所有Java运行时库。(必要)

  • 我目前正在尝试创建一个基本的Java项目。出现的第一个选项是“Java with Maven”,我已经用过了,但没有给我需要的“创建主类”选项。 我使用的是Apache Netbeans IDE 11.0,运行在Windows10,x64上。我花了一整天的时间更新和安装我找到的最新的JDK版本,但我仍然无法使它工作。 我也读过这个答案,但它不起作用:不能在Netbeans 8.2上创建项目

  • 在NetBeans 7.2中,我很难找到如何在Maven项目中使用-Xlint:unchecked进行编译。在Ant项目下,可以通过转到项目属性来更改编译器标志- 有没有办法使用Maven将IDE配置为使用此类标志进行编译?

  • 我创建了一个新的maven junit5框架项目来测试现有的java项目。我在新创建的maven junit5框架项目的构建路径中添加了java项目。我右键单击要为其添加 junit 测试用例的方法,然后选择新的 junit 测试用例,并将源文件夹更改为新的 maven junit5 框架项目 src 目录,并将其余选项保留为默认值。创建了 junit 测试,并将测试作为单元测试运行,没有任何问题

  • 我得到以下错误消息,同时添加m2e Maven与eclipse: 无法完成安装,因为找不到一个或多个必需项。正在安装的软件:用于Eclipse的m2e-Maven集成(包括孵化组件)1.6。1.20150625-2338(org.eclipse.m2e.feature.feature.group 1.6.1.20150625-2338)缺少要求:Maven POM XML编辑器1.6。1.2015

  • 我是maven的新手,在使用程序集插件生成zip文件时花了大约3天的时间,引用了http://www.petrikainulainen.net/programming/tips-and-tricks/creating-a-runnable-binary-distribution-with-maven-assembly-plugin/My project is multi module,所以我还引用