如何在我的Java项目中使用Maven以及为什么?

时间:2010-06-18 18:30:42

标签: java maven-2

我试图找出Maven的用法,并且我有很多文章描述了它的功能和用途。但是,从生产力的角度来看,我无法理解Maven的实际用途。

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

所以,

  1. Maven在哪里拍照?我使用过Ant,我理解Ants对标准化构建过程的好处。但为什么我们需要Maven形式的高级Ant?

  2. 无论如何,我需要使用它,所以我从哪里开始 - 基本流程,一些好的教程?

  3. 由于

8 个答案:

答案 0 :(得分:14)

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

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

在我目前的任务之前,我不是一个信徒,但是在将它用于大型企业应用程序两年后,我绝对尊重Maven带来的东西。有很多在线资源,但如果你要成为领导者并且真的感到不舒服,我建议你买一本书 - the O'Reilly one很有帮助。


忘记提到有一个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)。

答案 1 :(得分:5)

我与你一样完全同样的感觉,多年来我避免使用Maven。

问题是,它允许您轻松获取应用程序可能需要的所需jar(称为依赖项 - jar和其他东西 - )。因此,下次有人运行你的项目时,他会自动获得罐子。

我知道在使用现有项目之前,有点难以理解。

例如,我最近下载了一个开源项目,它依赖于10或12种不同的jar版本。下载源代码并执行Maven之后,所有这些jar(以及更多其他的)都是为我下载的。

Maven(我的朋友告诉我)的问题是,为了执行“Hello world”计划,它首先下载世界来迎接他。 :P

答案 2 :(得分:4)

对于那些想知道maven下载依赖关系jar的人,请查看用户根目录中名为.m2的文件夹。例如。对我来说,它是c:\ documentsand settings \ myUserName.m2 \

我也对maven进行了一些研究,我做了一些像提醒一样的小涂鸦。如果值得阅读,那么这里是::

/ * mvn生成 mvn install下载所有必要的jar mvn测试测试应用程序... mvn site构建站点下载依赖项

要部署网站,我们需要在pom.xml中声明要分发的位置, 类似于部署存储库。   ...               网站       SCP://www.mycompany.com/www/docs/project/           ...

mvn site-deploy部署网站

如何构建网站结构: site.xml文件用于描述站点的布局,并替换Maven中使用的navigation.xml文件

下面给出了一个样本:

       Maven的     http://maven.apache.org/images/apache-maven-project.png     http://maven.apache.org/           http://maven.apache.org/images/maven-small.gif                                     

<menu name="Maven 2.0">
  <item name="Introduction" href="index.html"/>
  <item name="Download" href="download.html"/>
  <item name="Release Notes" href="release-notes.html" />
  <item name="General Information" href="about.html"/>
  <item name="For Maven 1.x Users" href="maven1.html"/>
  <item name="Road Map" href="roadmap.html" />
</menu>

<menu ref="reports"/>

...

所以实际上,我们需要将我们的html链接到这种结构格式来制作网站布局 为了让我们添加任何新的CSS或这样的东西,我们需要做的就是将它们放入资源的一部分 src文件夹

然后我们可以创建我们项目的war文件,并将其放在apache的httpd文件夹或web服务器的类似文件夹中

如果我们需要生成项目,我们需要在pom.xml文件中添加几行代码,即:   ...                        org.apache.maven.plugins         Maven的项目信息的报告,插件         2.0.1                  ...

另外,站点描述符将在site.xml中设置

详细信息可以在maven的文档中看到

maven结构及其重要性:

项目/    pom.xml - 定义项目    SRC /       主要/           java / - 包含将进入最终工件的所有Java代码                   有关详细信息,请参阅maven-compiler-plugin           scala / - 包含将进入最终工件的所有scala代码。 ////至今我们目前的项目还不需要                    有关详细信息,请参阅maven-scala-plugin           resources / - 包含类路径上应该可用的所有静态文件                        在最后的神器中。有关详细信息,请参阅maven-resources-plugin           webapp / - 包含Web应用程序的所有内容(jsps,css,图像等)
                    有关详细信息,请参阅maven-war-plugin      site / - 包含用于创建项目网站的所有apt或xdoc文件              有关详细信息,请参阅maven-site-plugin      测试/          java / - 包含用于测试的所有java代码                  有关详细信息,请参阅maven-compiler-plugin          scala / - 包含用于测试的所有scala代码                   有关详细信息,请参阅maven-scala-plugin          resources / - 包含应该可用的所有静态内容                       测试期间的类路径。有关详细信息,请参阅maven-resources-plugin

mvn验证这将验证是否满足所有依赖项并且没有遗漏任何内容 mvn编译这将编译项目 mvn verify检查包是否有效 同样在项目中,依赖项将被插入到xml文件中

依赖注入的例子如下:                      org.scala琅             斯卡拉库             2.7.2-RC2                               JUnit的             JUnit的             3.8.1             测试              

每个依赖项都包含几个项目:

* groupId - The group of the dependency to rely on
* artifactId - The artifact in the group to rely on
* version - The version of the dependency to rely on
* scope - The "scope" of the dependency. Defaults to compile (more details later)
* packaging - The packaging for the dependency.  Defaults to jar (e.g. jar, war, ear)

您可以按照以下步骤整合静态页面:

* Put your static pages in the resources directory, ${basedir}/src/site/resources
* Create your site.xml and put it in ${basedir}/src/site
* Link to the static pages by modifying the menu section, create items and map them to the filenames of the static pages

mvn tomcat:部署到tomcat或apache,你可以去执行这个命令

答案 3 :(得分:3)

Free books about Maven可以从Sonatype下载(Maven的原始开发人员来自)。

另请参阅Apache Maven网站上的文档。

答案 4 :(得分:1)

  

Maven在哪里拍照?一世   使用过Ant,我理解蚂蚁   标准化构建的好处   处理。但为什么我们需要一个   Maven形式的高级Ant?

  • Maven介绍了“约定优于配置”,如果有些同事编写比代码更大的ant片段,这会有所帮助。加上依赖关系管理,唯一的麻烦就是转换包含许多工件的整体项目。
  

无论如何,我需要使用它,所以   我从哪里开始 - 基本流程,   一些很好的教程?

有帮助的。

答案 5 :(得分:1)

答案 6 :(得分:0)

最新的netbeans也有很好的maven集成。

答案 7 :(得分:0)

如果您在组织内,请尝试构建maven存储库代理。 Artifactory是个不错的选择。